gpt4 book ai didi

hadoop - 处理 pig 中的刺分隔符

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

My Source 是一个以“þ”作为分隔符的日志文件。我正在尝试在 Pig 中读取此文件。请查看我尝试过的选项。

选项 1:

使用 PigStorage("þ") - 这行不通,因为它无法处理 unicode 字符。

选项 2:

我尝试将这些行读取为字符串并尝试用“þ”拆分该行。这也行不通,因为 STRSPLIT 遗漏了最后一个字段,因为它最后有“\n”。

我可以在网络上看到多个问题,但无法找到解决方案。请指导我这个。

荆棘细节: http://www.fileformat.info/info/unicode/char/fe/index.htm

最佳答案

这是您期望的解决方案吗?

input.txt:  
helloþworldþhelloþworld
helloþworldþhelloþworld
helloþworldþhelloþworld
helloþworldþhelloþworld
helloþworldþhelloþworld

PigScript:
A = LOAD 'input.txt' as line;
B = FOREACH A GENERATE FLATTEN(REGEX_EXTRACT_ALL(line,'(.*)þ(.*)þ(.*)þ(.*)'));
dump B;

Output:
(hello,world,hello,world)
(hello,world,hello,world)
(hello,world,hello,world)
(hello,world,hello,world)
(hello,world,hello,world)

添加了具有不同数据类型的第二个选项:

input.txt  
helloþ1234þ1970-01-01T00:00:00.000+00:00þworld
helloþ4567þ1990-01-01T00:00:00.000+00:00þworld
helloþ8901þ2001-01-01T00:00:00.000+00:00þworld
helloþ9876þ2014-01-01T00:00:00.000+00:00þworld

PigScript:
A = LOAD 'input.txt' as line;
B = FOREACH A GENERATE FLATTEN(REGEX_EXTRACT_ALL(line,'(.*)þ(.*)þ(.*)þ(.*)')) as (f1:chararray,f2:long,f3:datetime,f4:chararray);
DUMP B;
DESCRIBE B;

Output:
(hello,1234,1970-01-01T00:00:00.000+00:00,world)
(hello,4567,1990-01-01T00:00:00.000+00:00,world)
(hello,8901,2001-01-01T00:00:00.000+00:00,world)
(hello,9876,2014-01-01T00:00:00.000+00:00,world)

B: {f1: chararray,f2: long,f3: datetime,f4: chararray}

另一个荆棘符号A¾:

input.txt  
1077A¾04-01-2014þ04-30-2014þ0þ0.0þ0
1077A¾04-01-2014þ04-30-2014þ0þ0.0þ0
1077A¾04-01-2014þ04-30-2014þ0þ0.0þ0

PigScript:
A = LOAD 'jinput.txt' as line;
B = FOREACH A GENERATE FLATTEN(REGEX_EXTRACT_ALL(line,'(.*)A¾(.*)þ(.*)þ(.*)þ(.*)þ(.*)')) as (f1:long,f2:datetime,f3:datetime,f4:int,f5:double,f6:int);
DUMP B;
describe B;

Output:
(1077,04-01-2014,04-30-2014,0,0.0,0)
(1077,04-01-2014,04-30-2014,0,0.0,0)
(1077,04-01-2014,04-30-2014,0,0.0,0)
B: {f1: long,f2: datetime,f3: datetime,f4: int,f5: double,f6: int}

}

关于hadoop - 处理 pig 中的刺分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25871190/

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