如何使用多个 ctrl 分隔符在 pig 中加载数据
How to load data in pig with more than one ctrl delimiter
我正在 pig 中加载文件,分隔符为“^A^E^A”
我尝试了以下命令,但它不起作用。
data = LOAD 'test.txt' USING PigStorage('\u0001\u0005\u0001') AS (user, time, query);
我错过了什么吗?或者有没有办法直接使用 PigStorage 指定上述分隔符?怎么样?
谢谢。
我相信 PigStorage 不会支持多个 ctrl 分隔符,您可能必须编写 UDF 才能实现这一点。
加载数据为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.[=10=],'|');
File_Data = 加载 'thedata.csv' 使用 TextLoader();
Cleansing_Data = FOREACH File_Data 生成替换($0,'\u0001|\u0005\|\u0001','');
使用 PigStorage() 将 Cleansing_Data 存储到 'tmp/Cleansing_Data.txt';
Final_Data = LOAD 'tmp/Cleansing_Data.txt' USING PigStorage(',') AS (user, time, query);
我正在 pig 中加载文件,分隔符为“^A^E^A”
我尝试了以下命令,但它不起作用。
data = LOAD 'test.txt' USING PigStorage('\u0001\u0005\u0001') AS (user, time, query);
我错过了什么吗?或者有没有办法直接使用 PigStorage 指定上述分隔符?怎么样?
谢谢。
我相信 PigStorage 不会支持多个 ctrl 分隔符,您可能必须编写 UDF 才能实现这一点。
加载数据为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.[=10=],'|');
File_Data = 加载 'thedata.csv' 使用 TextLoader(); Cleansing_Data = FOREACH File_Data 生成替换($0,'\u0001|\u0005\|\u0001',''); 使用 PigStorage() 将 Cleansing_Data 存储到 'tmp/Cleansing_Data.txt'; Final_Data = LOAD 'tmp/Cleansing_Data.txt' USING PigStorage(',') AS (user, time, query);