3

我有一个要求,我想将 5GB ORC 文件拆分为 5 个文件,每个文件大小为 1 GB。ORC 文件是可拆分的。这是否意味着我们只能逐条分割文件条带?但我有一个要求,我想根据大小拆分 orc 文件。例如,将 5GB ORC 文件拆分为 5 个文件,每个文件大小为 1 GB。如果可能,请分享示例。

4

1 回答 1

3

一种常见的方法,考虑到您的文件大小可以是 5GB、100GB、1TB、100TB 等。您可能希望挂载一个指向该文件的 Hive 表并定义另一个指向不同目录的表,然后从一个运行插入表到另一个使用Hive 提供的插入语句。

在脚本的开头,确保您具有以下 Hive 标志:

set hive.merge.mapredfiles=true;
set hive.merge.mapfiles=true;
set hive.merge.smallfiles.avgsize=1073741824;
set hive.merge.size.per.task=1073741824;

这样,每个减速器的输出平均值将1073741824 Bytes等于1GB

如果您只想使用 Java 代码,请使用以下标志:

mapred.max.split.size
mapred.min.split.size

请检查这些,它们非常有用:

于 2017-03-03T18:38:04.870 回答