hive context doesn't recognize temp table in pyspark - AnalysisException: 'Table not found'
我正在使用以本地模式运行的 pyspark (1.6.1)。
我有一个来自 csv 文件的数据框,我需要添加 dense_rank() 列。
我知道 sqlContext 不支持窗口功能,但 HiveContext 支持。
1 2 3 4 5 | hiveContext = HiveContext(sc) df.registerTempTable("visits") visit_number = hiveContext.sql("select store_number," "dense_rank() over(partition by store_number order by visit_date) visit_number" "from visits") |
我收到错误消息:
AnalysisException: u'Table not found: 访问;
警告后:WARN ObjectStore: Failed to get database default, return NoSuchObjectException
在阅读了之前的问题后,我尝试将 conf/hive_defaults.xml 中的 ConnectionURL 更改为 hive 目录的确切位置,但没有成功。
有人知道这个问题吗?
谢谢!
结果:
删除 SQLContext 并仅使用 HiveContext,一切正常。
你应该在 registerTempTable
之前创建 DataFrame
1 | MyDataFrame <- READ.df(sqlContext, CsvPath, SOURCE ="somthing.csv", header ="true") |
然后:
1 | registerTempTable(MyDataFrame,"visits") |