Spark的dataframe和sparkSql的详细核心数据处理代码教程

Spark系列

第一章 Spark 大数据入门之dataframe和sparkSql的使用



前言

例如:随着人工智能的不断发展,大数据处理这门技术也越来越重要,很多人都开启了学习大数据技术,本文就介绍了Spark的基础内容。


一、Spark是什么?

是一种用于大数据工作负载的分布式开源处理系统。它使用内存中缓存和优化的查询执行方式,可针对任何规模的数据进行快速分析查询。Spark基于内存计算,提高了在大数据环境下数据处理的实时性,同时保证了高容错性和高可伸缩性,允许用户将Spark部署在大量的廉价硬件之上,形成集群。

二、使用步骤

1.引入库

代码如下(示例):

from pyspark.sql import Sparksession 
spark = SparkSession.builder
                    .master("master")
                    .appName("appName")
                    .getOrCreate()

2.Spark 的dataframe数据的核心操作


“”“Spark 的dataframe数据的核心操作”“”
y = x.agg("amt":"avg")#聚合操作按照amt列
y=x.alias() # 修改列名
x.cache() # 对于数据持久化
y = x.collect() # collect操作会把数据直接取回内存,以python列表形式返回
y = x.columns # 列名
y = x.corr(col1="a",col2="b") # 两列的相关性
y = x.count() # 行的计数的操作
x.describe().show() # 数据描述
y = x.distinct() # 对行进行去重
y = x.drop('a') # 删除A列
y = x.dropna(how='any', subset=['a','b'])# 删除a,b两列存在nan的行
y = x.fillna(value='name', subset=['a','b'])# a,b两列填充name值存在nan的行
y = x.filter('a>1') #筛选a列大于1的行
y = x.flatMap(lambda x:(x[0],x[2]))对dataframe每一行的数据取对应的位置进行返回
y = x.groupby('A').avg('b') # 对A列进行分组后对b列进行聚合
z = x.join(y,x.a=y.b,'left').select('a','b','c','d')#对x,y数据表进行左连接,并选择要查询的列
y = x.orderby('a',ascending=[False])#对a列进行降序排列

在这里插入代码片

2.Spark 的SparkSql数据的核心操作


“”“Spark 的SparkSql数据的核心操作”“”

datatable = spark.read.json(data) # 构建dataframe
datatable.createOrReplaceTempView('datatableview')# 创建datatable临时表
spark.sql('select * from datatableview').colect() # 从临时表中执行sql请求返回数据
datatable.printSchema() # 输出表格式

# 用dataframe的写法和sql的写法来筛选B = 20的a,c两列
datatable.select('a','c').filter('b'=20).show()
spark.sql("select a,c from datatableview where b=20").show()

# 用dataframe的写法和sql的写法来筛选B 中存在 20的a,c两列
datatable.select('a','c').filter("'b' like '%20%'").show()
spark.sql("'select a,c from datatableview where b like '%20%'").show()


总结

动手才会有深的体会

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值