Apache pig 如何忽略数据字段中的“,”

Apache pig 如何忽略数据字段中的“,”,apache-pig,Apache Pig,我正在尝试生成以下内容。。。 输入 396124436476092416,想想你所生活的生活,但不要认为它伤害了你。生活确实是一份礼物,但同时也是一种诅咒,服从你的命令 396124440112951296,00:00 MAW,卫斯理比顿 A = LOAD '/user/root/data/tweets.csv' USING PigStorage(',') as (users:chararray, tweets:chararray); B = FILTER A by users == '3961

我正在尝试生成以下内容。。。 输入 396124436476092416,想想你所生活的生活,但不要认为它伤害了你。生活确实是一份礼物,但同时也是一种诅咒,服从你的命令 396124440112951296,00:00 MAW,卫斯理比顿

A = LOAD '/user/root/data/tweets.csv' USING PigStorage(',') as (users:chararray, tweets:chararray);
B = FILTER A by users == '396124436476092416';
输出截断 396124436476092416,想想你所生活的生活,但不要认为它会伤害你,生活真的是一份礼物

输出例外 396124436476092416,想想你所生活的生活,但不要认为它伤害了你。生活确实是一份礼物,但同时也是一种诅咒

我不想将行作为行读取。

您可以使用它来加载数据

但是,如果您不希望这样做,以下是Apache Pig本身的解决方法:

-加载数据

A  = LOAD 'your/path/users.csv' USING TextLoader() AS (unparsed:chararray);
-将您的字符串替换为|,以便分隔您的推文

B = FOREACH A GENERATE REPLACE(unparsed, '\\"', '|') AS parsed:chararray;
-将临时解析数据存储到您的位置

STORE B INTO 'your/path/parsed_users.csv' USING PigStorage('|');
-加载已解析的数据

C = LOAD 'your/path/parsed_users.csv' USING PigStorage('|') AS (users:chararray, tweets:chararray);
-转储您的数据,无论如何它仍然会包含一个额外的逗号,但是您可以使用replace函数替换它

DUMP C;
这适合csv,所以您只需要使用

支持包含逗号和其他字符的双引号字段 双引号用反斜杠转义

以下是如何使用它:

register file:/home/hadoop/lib/pig/piggybank.jar
DEFINE CSVLoader org.apache.pig.piggybank.storage.CSVLoader();
A = LOAD '/user/root/data/tweets.csv' USING CSVLoader AS (users:chararray, tweets:chararray); 
B = FILTER A by users == '396124436476092416';

感谢您的想法,在过滤之前将,更改为|作品。与传统系统相比,引擎在检查这些验证功能的数据方面没有额外的价值。