2024年大数据最新Python+大数据学习笔记(一)_inferschema=true

• 在读取数据时,不是将数据一次性全部读入内存中,而
是分片,用时间换空间进行大数据处理
• 极大的利用了CPU资源
• 支持分布式结构,弹性拓展硬件资源。

pyspark:
• 在数据结构上Spark支持dataframe、sql和rdd模型 • 算子和转换是Spark中最重要的两个动作
• 算子好比是盖房子中的画图纸,转换是搬砖盖房子。有 时候我们做一个统计是多个动作结合的组合拳,spark常 将一系列的组合写成算子的组合执行,执行时,spark会
对算子进行简化等优化动作,执行速度更快

pyspark操作: • 对数据进行切片(shuffle)
config(“spark.default.parallelism”, 3000)
假设读取的数据是20G,设置成3000份,每次每个进程
(线程)读取一个shuffle,可以避免内存不足的情况
• 设置程序的名字
appName(“taSpark”)
• 读文件
data = spark.read.csv(cc,header=None, inferSchema=“true”)
• 配置spark context
Spark 2.0版本之后只需要创建一个SparkSession即可
from pyspark.sql import SparkSession
spark=SparkSession
.builder
.appName(‘hotel_rec_app’)
.getOrCreate()

# Spark+python 进行wordCount
from pyspark.sql import SparkSession
spark = SparkSession\
.builder\
.appName("PythonWordCount")\
.master("local[\*]")\
.getOrCreate()
# 将文件转换为RDD对象
lines = spark.read.text("input.txt").rdd.map(lambda r: r[0])
counts = lines.flatMap(lambda x: x.split(' ')) \
.map(lambda x: (x, 1)) \
.reduceByKey(lambda x, y: x + y)
output = counts.collect()
for (word, count) in output:
print("%s: %i" % (word, count))
spark.stop()

在这里插入图片描述

PySpark中的DataFrame

• DataFrame类似于Python中的数据表,允许处理大量结
构化数据
• DataFrame优于RDD,同时包含RDD的功能


# 从集合中创建RDD
rdd = spark.sparkContext.parallelize([
(1001, "张飞", 8341, "坦克"),
(1002, "关羽", 7107, "战士"),
(1003, "刘备", 6900, "战士")
])
# 指定模式, StructField(name,dataType,nullable)
# name: 该字段的名字,dataType:该字段的数据类型,
nullable: 指示该字段的值是否为空
from pyspark.sql.types import StructType, StructField, 
LongType, StringType # 导入类型
schema = StructType([
StructField("id", LongType(), True),
StructField("name", StringType(), True),
StructField("hp", LongType(), True), #生命值
StructField("role\_main", StringType(), True)
])
# 对RDD应用该模式并且创建DataFrame
heros = spark.createDataFrame(rdd, schema)
heros.show()

# 利用DataFrame创建一个临时视图
heros.registerTempTable("HeroGames")
# 查看DataFrame的行数


![img](https://img-blog.csdnimg.cn/img_convert/909fe5456678704dffa29200c3ed829e.png)
![img](https://img-blog.csdnimg.cn/img_convert/76beb31a42fea669bde3aa9535b08a67.png)

**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618545628)**


**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值