PySpark库的安装和一些方法

文章目录

    • 如何安装PySpark库
    • 构建PySpark执行环境入口对象
    • Python数据容器转RDD对象
    • 数据计算_map方法
    • 数据计算_flatMap方法——flatMap算子
    • 数据计算_reduceByKey方法——reduceByKey算子
    • 数据计算——案例练习1
    • 数据计算_filter方法
    • 数据计算_distinct方法——distinct算子
    • 数据计算_sortBy方法——sortBy算子
    • 数据计算——练习案例2
    • 数据输出_输出为python对象
    • 数据输出_输出到文件中——saveAsTextFile算子
      • 修改 rdd 分区为1个
    • 综合案例
    • 大数据分布式集群运行综合案例代码

如何安装PySpark库

pip install pyspark
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyspark

PySpark库的安装和一些方法_第1张图片

构建PySpark执行环境入口对象

想要使用PySpark库完成数据处理,首先需要构建一个执行环境入口对象。
PySpark的执行环境入口对象是:类 SparkContext 的类对象

# 导包
from pyspark import SparkConf,SparkContext
# 创建SparkConf类对象
conf = SparkConf().setMaster("local[*]").setAppName("test_spark_app")
# 基于SparkConf类对象创建SparkContext对象
sc = SparkContext(conf=conf)
# 打印PySpark的运行版本
print(sc.version)
# 停止SparkContext对象的运行(停止PySpark程序)
sc.stop()

在这里插入图片描述

Python数据容器转RDD对象

PySpark支持通过SparkContext对象的parallelize成员方法,将list,tuple,set,dict,str。转换为PySpark的RDD对象
注意:
1、字符串会被拆分出1个个的字符,存入RDD对象
2、字典仅有的key会被存入RDD对象

from pyspark import SparkConf,SparkContext
conf = SparkConf().setMaster("local[*]").setAppName("test_spark")
sc = SparkContext(conf=conf)

# coding=gbk 通过parallelize方法将Python对象加载到Spark内,成为RDD对象
# rdd1 = sc.parallelize([1, 2, 3, 4, 5])
# rdd2 = sc.parallelize((1, 2, 3, 4, 5))
# rdd3 = sc.parallelize("abcdefg")
# rdd4 = sc.parallelize({1, 2, 3, 4, 5})
# rdd5 = sc.parallelize({"key1": "value1", "key2": "value2"})
#
# # 如果要查看RDD里面有什么内容,需要用collect()方法
# print(rdd1.collect())
# print(rdd2.collect())
# print(rdd3.collect())
# print(rdd4.collect())
# print(rdd5.collect())


# 用过textFile方法,读取文件数据加载到Spark内,成为RDD对象
rdd = sc.textFile("E:/hello world.txt")
print(rdd.collect())

sc.stop()

数据计算_map方法

1、map算子(成员方法)
接受一个处理函数,可用lambda表达式快速编写
对RDD内的元素逐个处理,并返回一个新的RDD
2、链式调用
对于返回值是新RDD的算子,可以通过链式调用的方式多次调用算子。

from pyspark import SparkConf,SparkContext
import os
os.environ['PYSPARK_PYTHON'] = "E:\python3.7.9/python.exe"
conf = SparkConf().setMaster("local[*]").setAppName("test_spark")
sc = SparkContext(conf=conf)

# 准备一个RDD
rdd = sc.parallelize([1, 2, 3, 4, 5])
# 通过map方法将全部数据都乘以10

# def func(data):
#     return data * 10
#
# rdd2 = rdd.map(func)

rdd2 = rdd.map(lambda x: x * 10)

print(rdd2.collect())

# 链式调用
rdd2 = rdd.map(lambda x: x * 10).map(lambda x: x + 5)
print(rdd2.collect())

数据计算_flatMap方法——flatMap算子

功能:对rdd执行map操作,然后进行解除嵌套操作
计算逻辑和map一样
可以比map多出,解除一层嵌套的功能

from pyspark import SparkConf,SparkContext
import os
os.environ['PYSPARK_PYTHON'] = "E:\python3.7.9/python.exe"
conf = SparkConf().setMaster("local[*]").setAppName("test_spark")
sc = SparkContext(conf=conf)

# 准备一个RDD
rdd = sc.parallelize(["ithiema itcast 666", "itheima itheima itcast", "python itheima"])

# 需求,将RDD数据里面的一个个单词提取出来
rdd2 = rdd.flatMap(lambda x: x.split(" "))
print(rdd2.collect())

数据计算_reduceByKey方法——reduceByKey算子

功能:针对KV型RDD,自动按照key分组,然后根据你提供的聚合逻辑,完成组内数据(value)的聚合操作。
接受一个处理函数,对数据进行两两计算

from pyspark import SparkConf,SparkContext
import os
os.environ['PYSPARK_PYTHON'] = "E:\python3.7.9/python.exe"
conf = SparkConf().setMaster("local[*]").setAppName("test_spark")
sc = SparkContext(conf=conf)

# 准备一个RDD
rdd = sc.parallelize([('男', 99), ('男', 88), ('女', 99), ('女', 

你可能感兴趣的:(spark,python,大数据)