pyspark DataFrame 数据预处理


pyspark = spark + python

一、在pyspark中运行代码

pyspark提供了python交互式执行环境;
pyspark可以实时、交互的方式来分析数据;
pyspark提供了简单的方式来学习Spark API.
python 交互式环境 开发spark应用程序
使用spark提供的pyspark库来编写spark应用程序

二、pyspark 与 DataFrame

DataFrame与RDD的区别:
1、DataFrame的推出,让Spark具备了处理大规模数据的能力,不仅比原有的RDD转换更加简单易用,而且获得了更高的计算性能
2、Spark能够轻松实现从MySQL到DataFrame的转化,而且支持SQL查询
3、RDD是分布式的Java对象的集合,但是对象内部的结构对于RDD而言却是不可知的
4、DataFrame是一种以RDD为基础的分布式数据集,提供了详细的机构信息。

RDD分布式的java集合,在最外层只能看到java对象,不能看到内部的细节信息
基于RDD的分布式结构数据,提供明确的结构化信息。

RDD:对象——对象属性
DataFrame:货架,内部信息一目了然

三、pyspark DataFrame的创建及保存

从Spark2.0以上版本开始,Spark使用全新的SparkSession接口替代Spark1.6中的SQLContext及HiveContext接口。利用SparkSession接口来实现对数据的加载、转换、处理等功能。SparkSession实现了对数据的加载、转换、处理等功能。SparkSession实现了SQLContext及HiveContext所有功能。
SparkSession支持从不同的数据源加载数据,并把数据转换程DataFrame,而且支持把DataFrame转换程SQLContext自身中表,然后使用SQL语句来操作数据。SparkSession亦提供了HiveQL以及其他依赖于Hive的功能的支持。

SparkSession指挥官:

3.1、创建SparkSession对象:

在启动进入pyspark以后mpyspark就默认提供了一个SparkContext对象(名称为sc)和一个SparkSession对象(名称为spark)

 # 两个对象自动生成,直接使用
 from pyspark import SparkContext, SparkConf
 from pyspark.sql import SparkSession
 # 生成 sparksession对象
 spark = SparkSession.builder.config(conf = SparkConf()).getOrCreate()

3.2、创建DataFrame

spark.read.text(‘people.txt’)
spark.read.json(‘people.json’)
spark.read.parquet(‘people.parquet’)

或者:
读取文本文件创建DataFrame
spark.read.format(‘text’).load(‘people.txt’)
park.read.format(‘json’).load(‘people.json’)
park.read.format(‘parquet’).load(‘people.parquet’)

df = spark.read.json(‘file:///usr/re/people.json’)
df.show

3.3、DataFrame的保存

使用spark.write操作保存DataFrame
df ————> df.write.txt(‘people.txt’)
df ————> df.write.json(‘people.json’)
df ————> df.write.parquet(‘people.parquet’)
或者
df ————> df.write.format(‘text’).save(‘people.txt’)
df ————> df.write.format(‘json’).save(‘people.json’)
df ————> df.write.format(‘parquet’).save(‘people.parquet’)

四、pyspark DataFrame的常见操作


                
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值