PySpark初始化,生成RDD
Table of Contents
1. parallelize()集合 list或者array
Spark程序执行过程
每个spark 应用(application)包含一个驱动(driver)程序,这个驱动程序运行用户的主函数,并在集群中执行并行化操作。
驱动其实就是你的老大,你的主函数,他会产生很多个进程,每个进程可能有多个任务, 然后分配给工作节点作为任务
Spark程序初始化
Spark 程序的第一件事是创建一个SparkContext对象,这个对象告诉spark如何连接到集群。为了创建这个对象,首先需要创建一个包含application信息的 SparkConf 对象。
#import sparkSession package
from pyspark import SparkContext, SparkConf
conf = SparkConf().setAppName(appName).setMaster(master)
sc = SparkContext(conf=conf)
#你的程序
#
#
#
#
sc.stop()
sc.stop() 是用来结束当前的Spark程序,只有停止了当前程序 才能重新建立新的SparkContext对象
参数:
appName:是你的Spark程序在cluster上显示的名字
master
is a Spark, Mesos or YARN cluster URL, or a special “local” string to run in local mode. In practice, when running on a cluster, you will not want to hardcode master
in the program, but rather launch the application with spark-submit
and receive it there. 一般master都是提供的, 只需要把你的程序上传的集群上就行, 本地测试时,用‘local’
RDD
RDD是一种分布式的数据集,基于某种关键字,数据集会被划分成块,把各个块发送到节点。
RDD的操作转换是并行的,惰性的, 你不调用这个数据集,他就不会执行操作。
创建RDD
1. parallelize()集合 list或者array
data = sc.parallelize([1,2,3,4,5])
2 textFile
textFile文件路径传入格式
默认是从hdfs读取文件,也可以指定sc.textFile("路径").在路径前面加上‘hdfs://’表示从hdfs文件系统上读
本地文件读取 sc.textFile("路径").在路径前面加上‘file://’ 表示从本地文件系统读,如file:///home/user/spark/README.md
#记得import SparkFiles
from pyspark import SparkFiles
# hdfs目录格式如下
input_data_path = "hdfs://localhost:9002/input/file"
# 本地文件目录
input_data_path="file:///Users/a6/Downloads/file"
print (input_data_path)
result = sc.textFile(input_data_path)
textFile 一行一行的读入文件内容