【问题标题】:Sqoop is creating too many tiny files when importing data from databaseSqoop 在从数据库导入数据时创建了太多的小文件
【发布时间】:2017-08-28 06:58:19
【问题描述】:

我创建了一个使用 sqoop 将数据从数据库增量导入到 hdfs 的自动化过程。现在,hadoop 不是创建与块大小一样大的文件,而是创建多个小文件。如何指示 sqoop 使文件与块大小一样大?

【问题讨论】:

  • 您能提供您的流程的详细信息吗?> 映射器的数量、数据库、增量更新的密钥等?
  • @lake 我正在使用 100 个映射器。数据库是 Sybase。我基本上是将数据增量导入 HDFS,然后将其加载到外部表中。它检索大约 40 列和大约一百万行。问题是它在 sqoop 查询的目标目录中创建了很多小文件。您能告诉我哪些因素决定了为导入创建多少文件?

标签: hadoop hive hdfs sqoop


【解决方案1】:

文件数量最多应等于您的映射器数量。根据您的数据大小,我建议使用 1 个映射器执行增量更新,但是即使这样做,创建 1 个文件,您也可以使文件更小到块大小。您可以通过创建不同的流程来合并小文件来解决此问题。

【讨论】:

    【解决方案2】:

    根据插入数据库的记录数,sqoop增量作业在HDFS上创建文件,sqoop命令中可以传入-m 1,得到hdfs上的单个输出文件。

    当数据库中插入的记录越来越少时,如果 sqoop 获取这些记录并写入多个文件,那么 sqoop 合并作业可以提供帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多