如何用多个ctrl分隔符在pig中加载数据

uklbhaso  于 2021-06-02  发布在  Hadoop
关注(0)|答案(3)|浏览(449)

我正在pig中加载一个文件,其分隔符为“^a^e^a”
我试过下面的命令,但它不工作。

data = LOAD 'test.txt' USING PigStorage('\u0001\u0005\u0001') AS (user, time, query);

我错过什么了吗?或者有没有办法直接使用pigstorage指定上述分隔符?怎样?
谢谢。

qojgxg4l

qojgxg4l1#

file_data=使用textloader()加载“thedata.csv”;cleaning|data=foreach file|data generate replace($0,'\u0001 |\u0005|\u0001','');使用pigstorage()将cleaning_数据存储到“tmp/cleaning_data.txt”中;final_data=load'tmp/cleaning_data.txt',使用pigstorage(',')作为(用户、时间、查询);

v9tzhpje

v9tzhpje2#

将数据加载为line:chararray
将“\u0001\u0005\u0001”替换为“|”或“,”
使用“|”或“,”拆分结果行以生成所需的列。

data = LOAD 'test.txt' as (line:chararray);
clean_data = foreach data generate REPLACE(line,'\\u0001\\u0005\\u0001','|');
new_data = foreach clean_data generate SPLIT(clean_data.$0,'|');
pgvzfuti

pgvzfuti3#

我相信pigstorage不会支持多个ctrl分隔符,您可能需要编写udf来实现这一点。

相关问题