SparkSQL DataFrame 常用操作符

863 阅读1分钟

DataFrame 可以理解为数据库中的表。对于表的操作可以是将 dataFrame 创建为一个临时表后使用 sql语句进行操作,如:

df.createOrReplaceTempView("tmp")
spark.sql("select * from tmp").show()

也可以将 DataFrame 作为一个对象进行 sql 操作,下面是一些常见操作(PySpark)。

查询(Select)

1、形式一

selected1 = flights.select("tailnum","origin","dest")

2、形式二

temp = flights.select(flights.origin, flights.dest, flights.carrier)

3、起别名

avg_speed = (flights.distance/(flights.air_time/60)).alias("avg_speed")
speed2 = flights.selectExpr("origin", "dest", "tailnum", "distance/(air_time/60) as avg_speed”)

筛选(Where)

1、筛选单个形式一

long_flights1 = flights.filter("distance > 1000")

2、筛选单个形式二

long_flights2 = flights.filter(flights.distance>1000)

3、筛选多个

filterA = flights.origin == "SEA"
filterB = flights.dest == "PDX"
selected2 = temp.filter(filterA).filter(filterB)

聚合(groupBy)

1、min

flights.groupBy().min("distance").show()

2、max

flights.groupBy().max("air_time").show()

3、avg

flights.groupBy().avg("air_time").show()

4、sum

flights.withColumn("duration_hrs").groupBy().sum("duration_hrs").show()