gpt4 book ai didi

hadoop - 如何在 Pig 中拆分具有 '\t' 和 ',' 值的文本文件

转载 作者:可可西里 更新时间:2023-11-01 16:14:19 25 4
gpt4 key购买 nike

我想将具有制表符和逗号分隔值的文本文件转换为 PIG 中的完全逗号分隔值。我正在使用 Apache Pig 版本 0.11.1.,我尝试使用以下代码并尝试使用 FLATTEN、TOKENIZE。但我不能把它变成完整的 CSV 文件。

a = load '/home/mansoor/Documents/ip.txt' using PigStorage(',') as (key:chararray, val1:chararray, val2:chararray );  

b = FOREACH a {
key= STRSPLIT(key,'\t');
GENERATE key;
}

以下是我的文本文件输入:

M12345  M123456,M234567,M987653  
M23456 M23456,M123456,M234567
M34567 M234567,M765678,M987643

我需要一个包含完整 CSV 文件的文件,如以下输出:

M12345,M123456,M234567,M987653  
M23456,M23456,M123456,M234567
M34567,M234567,M765678,M987643

我该怎么做?

最佳答案

对于 pig 0.13,仅使用 load 而不使用 PigStorage 可以很好地加载 csv。

a = load '/home/mansoor/Documents/ip.txt';
dump a

给我

(M12345,M123456,M234567,M987653)
(M23456,M23456,M123456,M234567)
(M34567,M234567,M765678,M987643 )

如果这不是您想要的,您可能需要考虑 REPLACE 函数。这是处理可用 csv 的快速而肮脏的解决方案:

a = load '/home/mansoor/Documents/ip.txt' using PigStorage('\n');
b = foreach a generate FLATTEN(REPLACE($0, '\t', ','));
store b into 'tmp.csv';

然后您可以按预期使用 csv :

c = load 'tmp.csv' using PigStorage(',') as (key:chararray, val1:chararray, val2:chararray, val3:chararray);
describe c

给出 c: {key: chararray,val1: chararray,val2: chararray, val3:chararray}

关于hadoop - 如何在 Pig 中拆分具有 '\t' 和 ',' 值的文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25154974/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com