Dataframe的一个强大之处就是我们可以将它看作是一个关系型数据表,然后可以通过在程序中使用spark.sql()来执行SQL语句查询,结果返回一个Dataframe
如果想要使用SQL风格的语法,需要将Dataframe注册成表,采用如下的方式:
df.createTempView("score") # 注册一个临时视图(表)
df.createOrReplaceTempView("score") # 注册一个临时表,如果存在进行替换
df.createGlobalTempView("score") # 注册一个全局表
-
全局表:跨SparkSession对象使用,在一个程序内的多个SparkSession中均可调用,查询前带上前缀:
global_temp.
-
临时表:只在当前SparkSession中可用
- 注册好表后,可以通过:
sparksession.sql(sql语句)来执行sql查询,返回值是一个新的df
-
实例
# 注册好表后,就可以写sql查询 df2 = spark.sql("""SELECT * FROM score WHERe score < 99""") df2.show()
PySpark提供了一个包:pyspark.sql.functions
这个包里面提供了一些列的计算函数供SparkSQL使用
导包:from pyspark.sql import function as F
然后就可以用F对象调用函数计算了,这些功能函数,返回值多数都是Column对象



