用于文件操作的pig或hive

o2g1uqev  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(235)

我有一个文件组成如下:

&009:65 

34KKll90JJKK87LLOO

%(..)?.I$£.....

&013:35

36KKll90TTYY87LLPP

%%(.9)?'

&025:66

55KKll88ZZYY87MMQQ

%&(.9)?%%??-_'

我想得到一个文件:

&009:65 34KKll90JJKK87LLOO  %(..)?.I$£.....

&013:35 36KKll90TTYY87LLPP  %%(.9)?'.......

&025:66 55KKll88ZZYY87MMQQ  %&(.9)?%%??-_'.......

我用hortonworks,我想知道是用Hive还是Pig更好,我怎样才能做到这一点或其他使用?

9w11ddsr

9w11ddsr1#

hive、pig和整个hadoop生态系统都需要具有单行记录的文件,因此您可以在任何换行符上任意拆分文件,并使用任意数量的Map器分别处理拆分。
您的示例有跨多行的逻辑记录。不是可拆分的东西。无法以分布式方式轻松处理。游戏结束了。
解决方法:在某处启动一个shell,在本地下载丑陋的东西,用旧的sed或awk实用程序重建一致的记录,然后上传结果。你可以用Hive或Pig来读。
sed命令行示例(awk将是overkill imho)。。。

sed -n '/^&/ { N ; N ; N ; N ; s/\n\n/ /g ; p }' UglyStuff.dump > NiceStuff.txt

如果您喜欢一行:

hdfs dfs -cat /some/path/UglyStuff.dump | sed -n '/^&/ { N ; N ; N ; N ; s/\n\n/ /g ; p }' | hdfs dfs -put -f - /different/path/NiceStuff.txt

相关问题