【问题标题】:Best way for cutting fields from hadoop files从 hadoop 文件中剪切字段的最佳方法
【发布时间】:2016-02-01 11:41:47
【问题描述】:

我的 hadoop 集群中有几个文件,每个文件中有大约 2000 个字段。我需要一种快速的方法来从每个文件中删除特定字段并创建一个新文件以 sftping 到客户端。

例如。我有 20 个文件,字段从 1 到 2000 我需要从每个文件中按顺序提取字段 1,6,7,777,545,345,655,1004 等。

我每天都需要这样做,并且有几个流程选择不同的字段来使用。

有兴趣听听其他人的建议,以便使用最好的技术来做到这一点?

  • 使用 hive 查询选择所有必填字段
  • 使用 mapreduce 使用
  • spark 运行 hive
  • 或 mapreduce 完全不同的其他东西

谢谢, 红色

【问题讨论】:

    标签: hadoop mapreduce hive cloudera-cdh


    【解决方案1】:

    一种方法是使用 Apache Pig。源文件可以加载到 Pig 中,并且您知道提取字段的索引,您可以使用这些索引从 Apache Pig 关系(加载的文件)中提取。 Pig 中的索引从 0 开始。 有关在 Apache Pig 中加载和提取字段的更多详细信息,请参阅以下链接

    https://pig.apache.org/docs/r0.7.0/piglatin_ref2.html#LOAD

    【讨论】:

      【解决方案2】:

      或者,您可以使用 awk 命令对文件进行切片(指定适当的分隔符)并相应地通过管道传输命令。

      理想的语法可能有点像:

      hdfs dfs -cat <filename> | awk -F"," {print insert_columns_here} > output_file
      

      【讨论】:

      • 另外,您也可以使用 Hadoop 流式传输,通过创建如上所述的 awk 语句,使用映射器函数从 HDFS 中的文件中投影列。
      【解决方案3】:

      我会使用 hive 的“创建外部表作为选择”。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-16
        • 1970-01-01
        • 2017-04-02
        相关资源
        最近更新 更多