Py Spark Data Frame 操作

#在程序中添加一以下代码
import findspark
from pyspark.sql.types import StructType, StructField, StringType

findspark.init()
from pyspark import SparkContext,SparkConf
from pyspark.sql import SparkSession

spark = SparkSession.\
    builder.\
    master("local").\
    appName ("Python Spark SQL Hive integration example").getOrCreate()
'''
1 读取数据
data=spark.read.format("csv").load("file:///opt/module/datas/student.txt")
或者:
data=spark.read.csv("file:///opt/module/datas/student.txt")
# 展示数据
data.show()
# 读取csv数据,系统会自动切割数据
data1=spark.read.format("csv").load("/hive/company/dept/dept.txt",delimiter=',',encoding='utf-8')
data1.show()

2 列名重命名
data1.withColumnRenamed("_c0",["a","b","c"])

3.读取参数
3.1 header
3.2 delimiter
3.3 encoding
'''

# data1=spark.read.format("csv").load("/hive/company/dept/dept.txt")
# header=True代表将头作为列名
# data1=spark.read.csv("/hive/company/dept/dept.txt",header=True)
schema = StructType([
        StructField("id", StringType(), True),
        StructField("deptname", StringType(), True), # nullable=True代表此字段的值不为空
        StructField("salary", StringType(), True)
        ])
# data1=spark.read.options(delimiter='\t').csv("/hive/company/dept/dept.txt",schema=schema)
# 等同于下面的语句
data1=spark.read.format("csv").load("/hive/company/dept/dept.txt",delimiter='\t',encoding='utf-8',schema=schema)

data1.show()

# 查询数据
data1.select(data1['deptname']).show()

# 条件过滤查询
1,'查询deptname中含有人的数据'
data1.filter(data1['deptname'].contains)
2,'查询id等于10'
data1.filter(data1['id']==10).show()
3,'查询在列表的数据'
data1.filter(data1['deptname'].isin(['销售部']))
4,'查询含有某个数据的数据'
data1.filter(data1['deptname'].contains("销售"))
5,'使用分组查询'
data1.groupby(data1['salary']).agg('count')
6,'使用desc'
data1.describe(['id']).show()
7,'使用表达式--只能使用符号,is null ,is not null'
data1.filter("id == 10 or deptname == '销售部'")
8,'判断为空'
data1.filter('id is not null')
data1.filter(data1['id'].isNotNull())
#排序
data1.sort(data1['id'].desc())
data1.sort(data1['id'].asc())
8,'分组聚合'
data1.groupby(data1['salary']).agg({"id":"count","deptname":"max"})

# first: 该方法获取DataFrame的第1行记录。
# head: 该方法获取DataFrame的前n nn行记录。该方法只适用于DataFrame数据量较小,且所有数据都保存在内存中的情况。
# take: 获取DataFrame的前n nn行记录。
# tail: 获取DataFrame的后n nn行记录

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值