无法查看配置单元分区 table 中的数据
Cannot view data in hive partition table
我有一个外部 table,它有一个名为 rundate 的分区列。我可以使用
将数据加载到 table
DataFrame.write.mode(SaveMode.Overwrite).orc("s3://test/table")
然后我使用
创建一个分区
spark.sql("ALTER TABLE table ADD IF NOT EXISTS PARTITION(rundate = '2017-12-19')")
代码运行良好,我可以看到分区。但是我在 Hive table.
中看不到数据
您没有将分区数据保存在正确的文件夹结构中,还手动添加了数据不存在的分区。
两件事:
1.首先确保您在创建外部 table 的位置保存数据,并且文件夹结构与 hive expect 相同。例如,假设您的外部 table 名称为 table
,分区列为 rundate
,分区值为 2017-12-19
,外部 table 指向位置 s3://test/table
.然后保存分区 2017-12-19
的数据如下:
DataFrame.write.mode(SaveMode.Overwrite).orc("s3://test/table/rundate=2017-12-19/")
2.Once 在命令下保存成功,用最新添加的分区更新 hive 的 metastore。
synatx: msck repair table <tablename>
msck repair table table
我有一个外部 table,它有一个名为 rundate 的分区列。我可以使用
将数据加载到 tableDataFrame.write.mode(SaveMode.Overwrite).orc("s3://test/table")
然后我使用
创建一个分区spark.sql("ALTER TABLE table ADD IF NOT EXISTS PARTITION(rundate = '2017-12-19')")
代码运行良好,我可以看到分区。但是我在 Hive table.
中看不到数据您没有将分区数据保存在正确的文件夹结构中,还手动添加了数据不存在的分区。
两件事:
1.首先确保您在创建外部 table 的位置保存数据,并且文件夹结构与 hive expect 相同。例如,假设您的外部 table 名称为 table
,分区列为 rundate
,分区值为 2017-12-19
,外部 table 指向位置 s3://test/table
.然后保存分区 2017-12-19
的数据如下:
DataFrame.write.mode(SaveMode.Overwrite).orc("s3://test/table/rundate=2017-12-19/")
2.Once 在命令下保存成功,用最新添加的分区更新 hive 的 metastore。
synatx: msck repair table <tablename>
msck repair table table