【问题标题】:How merge files in Hive partitioned and bucketed files into one big file?如何将 Hive 分区和分桶文件中的文件合并为一个大文件?
【发布时间】:2019-11-02 20:16:39
【问题描述】:

我正在开发用于大数据处理的 Azure HDInsight 群集。几天前,我通过合并许多文件在 hive 中创建了一个分区和桶表。

由于 Azure 没有提供任何停止集群的选项,因此我不得不删除集群以节省成本。数据独立存储在 Azure 存储帐户中。当我使用相同的存储帐户创建新集群时,我可以使用 HDFS 命令查看数据库和表,但 hive 无法读取该数据库或表,也许 hive 没有关于它的元数据。

我剩下的唯一选择是将所有这些分区和分桶文件合并到一个文件中,然后再次创建表。那么有什么方法可以将该表迁移到另一个数据库或将其合并以便更容易迁移?

【问题讨论】:

    标签: azure hadoop hive hdfs hive-metastore


    【解决方案1】:

    您可以创建一个指向HDFS location 的EXTERNAL TABLE(具有与以前相同的属性)。既然你提到它有分区,你可以运行MSCK REPAIR TABLE table-name,这样你也可以看到分区。

    希望对你有帮助

    【讨论】:

    • 实际上分区内有 delta 文件夹,因为表是通过插入来自多个文件的数据创建的,因此我收到此错误:Failed with exception java.io.IOException:java.io .FileNotFoundException: wasb://xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/hive/warehouse/cdr.db/cdr_main/district=XYZ 是目录而不是文件。
    • 看起来这与您原来的问题不同!我提供的解决方案是否允许您创建表并获取数据并显示分区?如果这解决了您最初的问题,您能否详细说明问题,我很难理解这个问题。最好是问一个新问题(如果这个问题得到解决),并提供所有细节,或者编辑这个问题以反映您当前的问题。谢谢
    • 只是为了避免以后出现这个问题,您应该使用外部配置单元元存储。
    • @Naga,它确实创建了分区,但我无法查询数据,甚至无法计算记录,而且由于该表是通过合并许多文件创建的,因此确实存在增量文件夹。
    • 在不知道您如何创建表、基础数据的结构以及如何创建增量文件的情况下,我可能无法为您提供帮助
    猜你喜欢
    • 2018-06-10
    • 2017-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-23
    • 1970-01-01
    • 2021-05-28
    相关资源
    最近更新 更多