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()
总结
动手才会有深的体会