concat avro文件

ghg1uchk  于 2021-05-29  发布在  Hadoop
关注(0)|答案(2)|浏览(561)

我试图将avro文件合并成一个大文件,问题是 concat 命令不接受通配符

hadoop jar avro-tools.jar concat /input/part* /output/bigfile.avro

我得到:
线程“main”java.io.filenotfoundexception中出现异常:文件不存在:/input/part*
我试着用 "" 以及 '' 但没有机会。

ovfsdjhp

ovfsdjhp1#

而不是 hadoop jar avro-tools.jar 一个人可以跑 java -jar avro-tools.jar ,因为此操作不需要hadoop。

bogh5gae

bogh5gae2#

我很快检查了avro的源代码(1.7.7),似乎concat不支持glob模式(基本上,它们调用 FileSystem.open() 除了最后一个以外的每个论点)。
这意味着您必须显式地提供所有文件名作为参数。这很麻烦,但下面的命令应该可以满足您的需要:

IN=$(hadoop fs -ls /input/part* | awk '{printf "%s ", $NF}')
hadoop jar avro-tools.jar concat ${IN} /output/bigfile.avro

向这个命令添加对glob模式的支持将是一个很好的补充。

相关问题