csv - 使用 pig 过滤 CSV 列

标签 csv hadoop hive apache-pig bigdata

嗨,stackoverflow 社区;

我是 pig 的新手,我有一个 CSV 文件,其中包含 5 列标题,如下所示:

专栏 1 |专栏2 |专栏3 |专栏4 | column5

测试1012 |测试2045 |测试3250 |测试4865 | test5110
测试1245 |测试2047 |测试3456 |测试4234 |测试5221 …………

我只想对第 1、3 和 4 列进行排序,但我不知道如何按列标题进行过滤。

如果您能指出可以完成我想做的事情的正确功能,那就太好了。谢谢!

最佳答案

假设您像下面这样加载它(假设它使用逗号作为分隔符),那么您可以只使用 ORDER BY 功能。

myInput = LOAD 'myFile.csv' USING PigStorage(',') AS
     (c1:chararray,c2:chararry,c3:chararray,c4:chararray,c5:chararry);
mySortedInput = ORDER myInput BY c1 ASC, c3, c4 ASC;
DUMP mySortedInput;

如果您只想过滤掉那些列,那么在 LOAD 之后执行以下操作。

myInputWithLessCols = FOREACH myInput GENERATE
     c1, c3, c4;

如果我完全误解了你想要做的只是过滤掉标题行,那么你可以在 LOAD 语句之后执行以下操作。

myInputWithoutHeaders = FILTER myInput BY c1 != 'column1'
    AND c2 != 'column2' AND c3 != 'column3' 
    AND c4 != 'column4' AND c5 != 'column5';

关于csv - 使用 pig 过滤 CSV 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29866071/

相关文章:

java - 在 Java 中将 csv 行转换为 JSON 对象

java - 如何允许 apache hive 处理多个客户端查询

java - Lucidworks 保存 solr 格式未知字段

mysql - 对非常大的 INNER JOIN SQL 查询进行分区

java - 将图像存储到HDFS,Hive中

hadoop - 为所有节点在 hdfs 中复制数据是否更快?

python - Pandas 按列将 CSV 拆分为多个 CSV(或 DataFrames)

json - 无法使用 jq-string (""将 JSON 文件解析为 CSV,并且无法添加数组

java - 如何在 Java 中读取分隔文本文件?

scala - spark 中的自定义输入阅读器