Apache spark 分区的ORC表在配置单元中显示为空

Apache spark 分区的ORC表在配置单元中显示为空,apache-spark,pyspark,hive,partitioning,orc,Apache Spark,Pyspark,Hive,Partitioning,Orc,我已经为分区的ORC文件编写了一个Spark数据帧,如下所示: df.repartition("LOADED")\ .write\ .partitionBy("LOADED")\ .format("orc")\ .save("location") 磁盘上的所有内容都正确无误。 之后,我想从中创建一个配置单元表,如: CREATE TABLE table USING ORC LOCATION 'location' 命令运行时没有任何错误。但是如果我尝试查询表,它是空的 我也尝试

我已经为分区的
ORC
文件编写了一个Spark数据帧,如下所示:

df.repartition("LOADED")\
  .write\
  .partitionBy("LOADED")\
  .format("orc")\
  .save("location")
磁盘上的所有内容都正确无误。 之后,我想从中创建一个配置单元表,如:

CREATE TABLE table USING ORC LOCATION 'location'
命令运行时没有任何错误。但是如果我尝试查询表,它是空的

我也尝试过在没有分区的情况下做同样的事情,而且效果很好。我做错了什么? 分区文件夹如下所示:
LOADED=2019-11-16


仅供参考:我想将数据写入Azure Blob存储,并在其他集群中从中创建一个配置单元表。

您将数据直接写入
位置
而不是通过hiveQL语句。在这种情况下,我们需要使用以下命令从Hive/spark更新配置单元表的元数据:

msck repair table <db_name>.<table_name>;
msck修复表。;
(或)

altertable。添加分区(`LOADED`='')位置“”;
然后运行以下命令从表中列出分区:

show partitions <db_name>.<table_name>;
显示分区。;

您直接将数据写入
位置
而不是通过hiveQL语句。在这种情况下,我们需要使用以下方法从hive/spark更新hive表的元数据:

msck repair table <db_name>.<table_name>;
msck修复表。;
(或)

altertable。添加分区(`LOADED`='')位置“”;
然后运行以下命令从表中列出分区:

show partitions <db_name>.<table_name>;
显示分区。;

您只需要更新表上的分区信息,这样Hive就可以列出分区。这是通过MSCK REPAIR命令完成的:

spark.sql("MSCK REPAIR TABLE <tableName>")

您只需要更新表上的分区信息,这样Hive就可以列出分区。这是通过MSCK REPAIR命令完成的:

spark.sql("MSCK REPAIR TABLE <tableName>")