【发布时间】:2017-07-23 17:45:50
【问题描述】:
我有一个要求,我想将 5GB ORC 文件拆分为 5 个文件,每个文件大小为 1 GB。 ORC 文件是可拆分的。这是否意味着我们只能逐条分割文件条带? 但我有一个要求,我想根据大小拆分 orc 文件。 例如,将 5GB ORC 文件拆分为 5 个文件,每个文件大小为 1 GB。 如果可能,请分享示例。
【问题讨论】:
标签: java apache hadoop orc apache-crunch
我有一个要求,我想将 5GB ORC 文件拆分为 5 个文件,每个文件大小为 1 GB。 ORC 文件是可拆分的。这是否意味着我们只能逐条分割文件条带? 但我有一个要求,我想根据大小拆分 orc 文件。 例如,将 5GB ORC 文件拆分为 5 个文件,每个文件大小为 1 GB。 如果可能,请分享示例。
【问题讨论】:
标签: java apache hadoop orc apache-crunch
一种常见的方法,考虑到您的文件大小可以是 5GB、100GB、1TB、100TB 等。您可能希望挂载一个指向该文件的 Hive 表并定义另一个指向不同目录的表,然后运行使用 Hive 提供的 insert 语句从一个表插入到另一个表。
在脚本的开头,确保您具有以下 Hive 标志:
set hive.merge.mapredfiles=true;
set hive.merge.mapfiles=true;
set hive.merge.smallfiles.avgsize=1073741824;
set hive.merge.size.per.task=1073741824;
这样,每个reducer的平均输出将是1073741824 Bytes,等于1GB。
如果您只想使用 Java 代码,请使用以下标志:
mapred.max.split.size
mapred.min.split.size
请检查这些,它们非常有用:
【讨论】: