目录
map方法
简单来说:是对rdd里每个元素进行操作
# 导包
from pyspark import SparkConf, SparkContext
#Caused by: org.apache.spark.SparkException: Python worker failed to connect back.
# 就是代码没有准确的找到python解释器
import os
os.environ["PYSPARK_PYTHON"] = "D:/APP/Anaconda/envs/teat1/python.exe"
# 创建SparkConf 类对象
conf = SparkConf().setMaster("local[*]").setAppName("test_spark")
# 拿到执行环境入口对象
sc = SparkContext(conf=conf)
# 通过parallelize 方法将python对象加载到spark内,成为RDD对象
rdd = sc.parallelize([1, 2, 3, 4, 5]) # 列表
# 通过map方法将全部数据都乘以十,再加5
def func(data):
return data * 10
rdd2 = rdd.map(func).map(lambda x: x+5)
# (T) -> U 含义就是要传的这个函数要满足接受一个参数的传入,能够返回一个返回值
print(rdd2.collect())
# 运行结果 [15, 25, 35, 45, 55]
flatMap 方法
简单来说:和map方法差不多,就是比map方法多一个解除嵌套操作
reduceByKey方法
功能:针对KV型RDD(二元元组,一个元组里只有两个元素 ('a', 1) ('b',1)),自动按着key 分组,然后根据你提供的聚合逻辑(加,减...),完成组内数据(value) 的聚合操作
# 导包
from pyspark import SparkConf, SparkContext
#Caused by: org.apache.spark.SparkException: Python worker failed to connect back.
# 就是代码没有准确的找到python解释器
import os
os.environ["PYSPARK_PYTHON"] = "D:/APP/Anaconda/envs/teat1/python.exe"
# 创建SparkConf 类对象
conf = SparkConf().setMaster("local[*]").setAppName("test_spark")
# 拿到执行环境入口对象
sc = SparkContext(conf=conf)
# 通过parallelize 方法将python对象加载到spark内,成为RDD对象
rdd = sc.parallelize([('男',99), ('男',88), ('女',94), ('女',93)]) # 列表
# 通过map方法将全部数据都乘以十,再加5
rdd2 = rdd.reduceByKey(lambda a,b:a+b)
# (T) -> U 含义就是要传的这个函数要满足接受一个参数的传入,能够返回一个返回值
print(rdd2.collect())
#[('女', 187), ('男', 187)]
filter 算子
# 导包
from pyspark import SparkConf, SparkContext
#Caused by: org.apache.spark.SparkException: Python worker failed to connect back.
# 就是代码没有准确的找到python解释器
import os
os.environ["PYSPARK_PYTHON"] = "D:/APP/Anaconda/envs/teat1/python.exe"
# 创建SparkConf 类对象
conf = SparkConf().setMaster("local[*]").setAppName("test_spark")
# 拿到执行环境入口对象
sc = SparkContext(conf=conf)
# 通过parallelize 方法将python对象加载到spark内,成为RDD对象
rdd = sc.parallelize([1, 2, 3, 4, 5]) # 列表
# 通过 filter 对RDD进行过滤,偶数被保留
rdd2 = rdd.filter(lambda num: num%2 == 0)
# (T) -> U 含义就是要传的这个函数要满足接受一个参数的传入,能够返回一个返回值
print(rdd2.collect())
#[2, 4]
distinct 算子
# 导包
from pyspark import SparkConf, SparkContext
#Caused by: org.apache.spark.SparkException: Python worker failed to connect back.
# 就是代码没有准确的找到python解释器
import os
os.environ["PYSPARK_PYTHON"] = "D:/APP/Anaconda/envs/teat1/python.exe"
# 创建SparkConf 类对象
conf = SparkConf().setMaster("local[*]").setAppName("test_spark")
# 拿到执行环境入口对象
sc = SparkContext(conf=conf)
# 通过parallelize 方法将python对象加载到spark内,成为RDD对象
rdd = sc.parallelize([1, 2, 2, 2, 5]) # 列表
# 通过 filter 对RDD进行过滤,偶数被保留
rdd2 = rdd.distinct()
# (T) -> U 含义就是要传的这个函数要满足接受一个参数的传入,能够返回一个返回值
print(rdd2.collect())
#[1, 2, 5]
sortBy算子