GNU coreutils split может выполнить эту работу.
Если исходные данные являются строками - в моем случае они есть - и одна строка составляет около 84 bytes
, тогда блок HDFS64MB
может содержать около 800000
строк:
hadoop dfs -cat /sourcedir/* | split --lines=800000 - joined_
hadoop dfs -copyFromLocal ./joined_* /destdir/
или с опцией --line-bytes
:
hadoop dfs -cat /sourcedir/* | split --line-bytes=67108864 - joined_
hadoop dfs -copyFromLocal ./joined_* /destdir/