"""
演示获取PySpark的执行环境入库对象: SparkContext
并通过SparkContext对象获取当前PySpark的版本
"""
# 导包
from pyspark import SparkConf,SparkContext
# 创建SparkConf类对象中
conf = SparkConf().setSparkHome("local[*]").setAppName("test_spqrk_app")
#基FSparkConf类对象创LSparkContext对象
sc = SparkContext(conf = conf)
#打印PySpark的运行版本
print(sc.version)
#停止SparkContext对象的运行(停止PySpark程序)
sc.stop()
PySpark的编程模型
SparkContext类对象,是PySpark编程中一切功能的入口。PySpark的编程,主要分为如下三大步骤
通过SparkContext对象,完成数据输入
输入数据后得到RDD对象,对RDD对象进行选代计算
最终通过RDD对象的成员方法,完成数据输出工作
数据输入
只要数据输入到spark就一定是rdd
RDD对象
如图可见,PySpark支持多种数据的输入,在输入完成后,都会得到一个:RDD类的对象
RDD全称为:弹性分布式数据集(Resilient Distributed Datasets)PySpark针对数据的处理,都是以RDD对象作为载体,即:
数据存储在RDD内
各类数据的计算方法,也都是RDD的成员方法
RDD的数据计算方法,返回值依旧是RDD对象
Python数据容器转RDD对象
PySpark支持通过SparkContext对象的parallelize成员方法将
List
Tuple
Set
Dic
tstr
转换为PySpark的RDD对象
注意:
字符串会被拆分出1个个的字符,存入RDD对象
字典仅有key会被存入RDD对象
"""
演示通过PySpark代码加载数据,即数据输入
"""
from pyspark import SparkContext,SparkConf
#构建接口对象
conf = SparkConf().setSparkHome("local[*]").setAppName("test_rdd")
sc = SparkContext(conf=conf) #构建接口对象
#构建实验数据
list_1 = [1,2,3,4,5]
turple_1 = (1,2,3,4)
str_1 = ("asdoac")
dict_1 = {"key1":"value1","key2":"value2"}
set_1 = {1,2,3,4,5}
#通过parallelize方法将Python对象加载到Spark内,成为RDD对象
rdd1 = sc.parallelize(list_1) #列表转spark的rdd
rdd2 = sc.parallelize(turple_1) #元组转spark的rdd
rdd3 = sc.parallelize(str_1) #字符串转spark的rdd
rdd4 = sc.parallelize(dict_1) #字典转spark的rdd
rdd5 = sc.parallelize(set_1) #集合转spark的rdd
print(rdd1.collect())
print(rdd2.collect())
print(rdd3.collect())
print(rdd4.collect())
print(rdd5.collect())
sc.stop()
读取文件转RDD对象
PySpark也支持通过SparkContext入口对象来读取文件来构建出RDD对象
"""
演示通过PySpark代码加载数据,即数据输入
"""
from pyspark import SparkContext,SparkConf
#构建接口对象
conf = SparkConf().setSparkHome("local[*]").setAppName("test_rdd")
sc = SparkContext(conf=conf) #构建接口对象
#用过textFile方法,读取文件数据加载到Spark内,成为RDD对象
rdd = sc.textFile("D:/bill.txt")
print(rdd.collect())
sc.stop()