我已经将Spark数据帧写入了分区ORC
文件,如下所示:
df.repartition("LOADED")\
.write\
.partitionBy("LOADED")\
.format("orc")\
.save("location")
一切都正确地在磁盘上。之后,我想从中创建一个Hive表,例如:
CREATE TABLE table USING ORC LOCATION 'location'
该命令运行无任何错误。但是,如果我尝试查询该表,则该表为空。
我已经尝试过在不分区的情况下进行同样的操作,并且效果很好。我究竟做错了什么?分区的文件夹如下所示:LOADED=2019-11-16
供参考:我想将数据写入Azure Blob存储,并从另一个群集中的数据创建Hive表。
您只需要更新表上的分区信息,以便Hive可以列出存在的分区。这是通过MSCK REPAIR命令完成的:
spark.sql("MSCK REPAIR TABLE <tableName>")
此处有关此命令的更多信息
这里简单的例子
scala> spark.sql("select * from table").show
20/03/28 17:12:46 WARN ObjectStore: Failed to get database global_temp, returning NoSuchObjectException
+------+------+
|column|LOADED|
+------+------+
+------+------+
scala> spark.sql("MSCK REPAIR TABLE table")
scala> spark.sql("select * from table").show
+------+----------+
|column| LOADED|
+------+----------+
| a|2019-11-16|
| c|2019-11-16|
| b|2019-11-17|
+------+----------+
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句