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()