从hadoop文件中剪切字段的最佳方法

时间:2016-02-01 11:41:47

标签: hadoop mapreduce hive cloudera-cdh

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

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

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

有兴趣听取其他人的建议,以便采用最佳技术吗?

  • 使用配置单元查询选择所有必填字段
  • 使用mapreduce使用
  • 运行蜂巢的火花
  • 或mapreduce完全不同的其他东西

谢谢, 红色

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

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

理想的语法可能有点像:

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

答案 2 :(得分:-2)

我使用hive&#34;创建外部表作为选择&#34;。