spark搭建和使用,处理massive文件

文章目录

  • 1. 本地安装spark
    • 1.1 安装Anaconda
    • 1.2 安装JDK 1.8
    • 1.3 安装spark
      • 1.3.1 安装spark for hadoop版本
      • 1.3.2 添加环境变量
    • 1.4 安装hadoop
      • 1.4.1 下载hadoop
      • 1.4.2 配置环境变量
      • 1.4.3 添加winutils.exe补丁
    • 1.5 安装pyspark
    • 1.6 使用
      • 1.6.1 创建sparkContext,注意pycharm使用配置HADOOP_HOME
      • 1.6.2 textfile方式读取json文件,这种方式都是字符串
      • 1.6.2 spark.read方式读取json文件,读取出来之后都是dataframe
      • 1.6.3 接口熟悉:

面对千万数量级以上50G以上的数据处理,pandas处理数据需要使用chunk分块方式(内存不够),使用时间换空间。

1. 本地安装spark

我们采用local方式安装spark,集群方式下次介绍。

1.1 安装Anaconda

1.2 安装JDK 1.8

1.3 安装spark

1.3.1 安装spark for hadoop版本

下载pre-bulit for hadoop版本
spark搭建和使用,处理massive文件_第1张图片

1.3.2 添加环境变量

1.4 安装hadoop

1.4.1 下载hadoop

https://archive.apache.org/dist/hadoop/common/
spark搭建和使用,处理massive文件_第2张图片

1.4.2 配置环境变量

1.4.3 添加winutils.exe补丁

https://github.com/steveloughran/winutils
spark搭建和使用,处理massive文件_第3张图片
将下载好winutils.exe后,将这个文件放入到Hadoop的bin目录下
给权限,貌似非必要,必要的 话也不是/tmp/Hive:

C:\Hadoop\hadoop-2.7.1\bin\winutils.exe chmod 777 /tmp/Hive

1.5 安装pyspark

pip install pyspark

1.6 使用

1.6.1 创建sparkContext,注意pycharm使用配置HADOOP_HOME

from pyspark.sql import SparkSession
import os
os.environ['HADOOP_HOME'] = "C:\\hadoop-2.7.1"
print(os.environ['HADOOP_HOME'])
spark = SparkSession.builder.config("spark.sql.warehouse.dir","file:///E:/temp").appName("rdd_test").getOrCreate()
spark.conf.set("spark.executor.memory", "14g")
sc = spark.sparkContext

1.6.2 textfile方式读取json文件,这种方式都是字符串

raw_data = sc.textFile("file:///F:/employees_singleLine.json")
dataset = raw_data.map(lambda line: json_loads_and_extraction(line))

def json_loads_and_extraction(line):
    line = json.loads(line)
    ....下面是提取操作

1.6.2 spark.read方式读取json文件,读取出来之后都是dataframe

json文件:每一行都是一个json对象

df = spark.read.json("file:///F:/employees_singleLine.json")

1.6.3 接口熟悉:

https://nbviewer.jupyter.org/github/jkthompson/pyspark-pictures/blob/master/pyspark-pictures.ipynb
https://nbviewer.jupyter.org/github/jkthompson/pyspark-pictures/blob/master/pyspark-pictures-dataframes.ipynb

你可能感兴趣的:(分布式,python)