我有一个Hive表,是建立在一个外部Parquet文件负载顶部。Parquet文件应该由spark作业生成,但是由于将metadata flag设置为false,所以没有生成这些文件。我想知道是否有可能以某种无痛的方式恢复它。文件结构如下:
/apps/hive/warehouse/test_db.db/test_table/_SUCCESS
/apps/hive/warehouse/test_db.db/test_table/_common_metadata
/apps/hive/warehouse/test_db.db/test_table/_metadata
/apps/hive/warehouse/test_db.db/test_table/end_date=2016-04-20
/apps/hive/warehouse/test_db.db/test_table/end_date=2016-04-21
/apps/hive/warehouse/test_db.db/test_table/end_date=2016-04-22
/apps/hive/warehouse/test_db.db/test_table/end_date=2016-04-23
/apps/hive/warehouse/test_db.db/test_table/end_date=2016-04-24
/apps/hive/warehouse/test_db.db/test_table/end_date=2016-04-25
/apps/hive/warehouse/test_db.db/test_table/end_date=2016-04-26
/apps/hive/warehouse/test_db.db/test_table/end_date=2016-04-27
/apps/hive/warehouse/test_db.db/test_table/end_date=2016-04-28
/apps/hive/warehouse/test_db.db/test_table/end_date=2016-04-29
/apps/hive/warehouse/test_db.db/test_table/end_date=2016-04-30
假设文件 _metadata
不存在或过时。有没有一种方法可以通过hive命令重新创建它/生成它而不必启动整个spark作业?
1条答案
按热度按时间k97glaaz1#
好的,这里是演习,元数据可以直接访问使用Parquet工具。您需要先获取Parquet文件的页脚:
现在,您可以按以下方式获取文件元数据:
现在可以获取Parquet文件的元数据:
我们还可以在需要时使用提取的页脚来编写独立的元数据文件:
我希望这能回答你的问题。您可以在awesomespark的spark gotchas repo上阅读更多关于sparkDataframe和元数据的信息。