数据帧中的寄存器临时表不工作

2024-05-14 03:05:16 发布

您现在位置:Python中文网/ 问答频道 /正文

下面是我在dataframe中与python一起使用sql的脚本:

pyspark --packages com.databricks:spark-csv_2.10:1.4.0
from pyspark.sql import SQLContext
sqlContext = SQLContext(sc)
df = sqlContext.read.format('com.databricks.spark.csv').options(header='true', inferschema='true').load('file:///root/Downloads/data/flight201601short.csv')

测向显示(5) 显示结果如下:

enter image description here

然后我将数据帧注册到临时表:

df.registerTempTable("flight201601")

并尝试运行以下sql查询:

sqlContext.sql("select distinct CARRIER from flight201601")

它不会产生预期的结果,相反:

enter image description here

我也试过:

sqlContext.sql("select * from flight201601")

它给了我:

enter image description here

所以看来registerEmptable方法只创建表模式,而表没有填充,我缺少什么?


Tags: csvfrom脚本comtruedataframedfsql
2条回答

必须对由sqlContext.sql返回的数据帧调用show()方法才能获得查询结果。检查火花,上面写着

The sql function on a SQLContext enables applications to run SQL queries programmatically and returns the result as a DataFrame.

sqlDF = sqlContext.sql("select * from flight201601")
sqlDF.show()

@PasLeChoix酒店

当您执行下面的语句时 sqlContext.sql(“从flight201601中选择*”)

Spark将返回数据帧。因此,您需要将结果存储到DataFrame中,并使用show()命令将结果显示在@abaghel提到的控制台上。

默认情况下,每当Spark返回DataFrmae时,它只会在控制台上显示您的案例中的模式。

相关问题 更多 >