【问题标题】:Pig or Hive for a file manipulation用于文件操作的 Pig 或 Hive
【发布时间】:2015-11-19 09:28:16
【问题描述】:

我有一个文件组成如下:

&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 哪个更好,以及如何使用其中一个来实现这一点?

【问题讨论】:

    标签: hadoop hive apache-pig bigdata hortonworks-data-platform


    【解决方案1】:

    Hive、Pig 和整个 Hadoop 生态系统都希望文件具有单行记录,因此您可以在任何换行符处任意拆分文件,并使用任意数量的 Mapper 单独处理拆分.

    您的示例有跨越多行的逻辑记录。不可分割的东西。无法以分布式方式轻松处理。游戏结束。

    解决方法:在某个地方启动一个 shell,在本地下载丑陋的东西,使用旧的 sedawk 实用程序重建一致的记录,然后上传结果。然后你可以用 Hive 或 Pig 来读取它。

    示例 sed 命令行(awk 恕我直言)...

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-28
      相关资源
      最近更新 更多