0

我们的数据每天加载到具有分区列的 hdfs 中。问题是每个分区的文件大小小于 50mb。因此,当我们从所有这些分区读取数据以将数据加载到下一张表时需要几个小时。我们如何解决这个问题?

4

1 回答 1

1

我建议您在从 spark 读取之前运行一天结束的工作以合并/合并并制作一个明显更大的大文件,以便在 spark 中进行处理。

进一步阅读cloudera 博客/文档以解决这些问题 Hadoop 中的分区管理,其中讨论了几种技术来解决这些问题,例如

    1. 合并选定表上的分区
    1. 归档冷数据
    1. 删除分区

选择 cloudera 博客中讨论的一种技术来满足您的需求。希望这可以帮助!


其他不错的选择 典型的用例是使用开源 delta Lake/如果您使用数据块,请选择他们的 delta Lake 以获得丰富的功能集......

示例 Maven 坐标。

<dependency>
  <groupId>io.delta</groupId>
  <artifactId>delta-core_2.11</artifactId>
  <version>0.6.1</version>
</dependency>

使用增量。您可以根据需要插入/更新/删除数据。它将减少维护步骤...

在 Delta Lakes 中压缩小文件

于 2020-06-03T04:25:10.773 回答