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

ccrfmcuu  于 2021-06-21  发布在  Pig
关注(0)|答案(2)|浏览(307)

我正在努力产生以下。。。输入396124436476092416,“想想你所生活的生活,但不要想得那么辛苦,生活确实是一份礼物,但同时它也是一个诅咒”,服从乔尼09 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,“想想你所生活的生活,但不要认为它伤害了你,生活真的是一份礼物,但同时它也是一个诅咒”)
我不想把行读作行。

cu6pst1q

cu6pst1q1#

这符合csv标准化,所以您只需要使用csvloader
支持双引号字段,该字段包含逗号和其他用反斜杠转义的双引号。
使用方法如下:

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';
vnjpjtjt

vnjpjtjt2#

可以使用csvloader加载数据
但是,如果您不希望这样做,下面是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);

--转储你的数据,无论如何这仍然会包含一个额外的逗号( , )但是你可以用替换函数来替换它。

DUMP C;

相关问题