我的Hadoop集群中有几个文件,每个文件中大约有2000个字段。 我需要一种快速的方法从每个文件中剪切出特定字段并创建一个新文件以发送到客户端。
例如。我有 20 个文件,字段从 1 到 2000我需要按该顺序从每个文件中拉取字段 1,6,7,777,545,345,655,1004 等。
我每天都需要这样做,并且有几个过程选择要使用的不同字段。
有兴趣听听其他人对使用最佳技术的建议吗?
- 使用 hive 查询选择所有必填字段 使用
- 地图减少使用
- 火花运行蜂巢
- 或 mapreduce 其他完全不同的东西
谢谢红
一种方法是使用 Apache Pig。源文件可以加载到 Pig 中,并且由于您知道提取字段的索引,您可以使用这些索引从 Apache Pig 关系中提取(加载的文件)。在 Pig 中,索引从 0 开始。有关在 Apache Pig 中加载和提取字段的更多详细信息,请参阅以下链接
https://pig.apache.org/docs/r0.7.0/piglatin_ref2.html#LOAD
或者,您可以使用 awk 命令对文件进行切片(指定适当的分隔符)并相应地通过管道传输命令。
理想的语法可能有点像:
hdfs dfs -cat <filename> | awk -F"," {print insert_columns_here} > output_file
我会使用 Hive 的"创建外部表作为选择"。