gpt4 book ai didi

apache-pig - 使用 Pig 从数据中删除单引号

转载 作者:行者123 更新时间:2023-12-03 13:14:20 25 4
gpt4 key购买 nike

这是我的数据的样子

(10, 'ACCOUNTING', 'NEW YORK')
(20, 'RESEARCH', 'DALLAS')
(30, 'SALES', 'CHICAGO')
(40, 'OPERATIONS', 'BOSTON')

我想使用 Pig 脚本从此数据中删除 (, )'。我希望我的数据看起来像这样-

10, ACCOUNTING, NEW YORK
20, RESEARCH, DALLAS
30, SALES, CHICAGO
40, OPERATIONS, BOSTON

我很长一段时间都坚持这一点。请帮忙。提前致谢。

最佳答案

你能用下面的正则表达式试试 REPLACE 函数吗?

解释:
在 Regex 中,很少有字符具有特殊含义 \^ $ 。 , | ? * + ( ) [ {.这些特殊字符称为“元字符”。如果您想将这些字符中的任何一个用作正则表达式的一部分,则需要使用单个反斜杠将它们转义。在我们的例子中,Pig 使用基于 Java 的正则表达式引擎,所以所有的特殊字符都需要用双反斜杠转义(Java 使用\\双反斜杠来区分特殊字符)。

从输入中删除 '(' ')' 和 '(single quote) 字符。
1. 只需将 () 替换为双反斜杠 \\(\\)
2. '(single quote) 是Pig(默认字符串文字)中的特殊字符,所以这也需要双反斜杠来去除特殊含义,但是双反斜杠没有't convince pig parser(双反斜杠会出错)这就是我使用三个反斜杠作为单引号的原因 \\\' 去除特殊含义。
3. [] 是字符类,这将只匹配几个字符中的一个。只需将要匹配的字符放在方括号内即可。在我们的例子中是 [()'].
4. + symbol 用于匹配一个或多个字符。

输入

(10, 'ACCOUNTING', 'NEW YORK')
(20, 'RESEARCH', 'DALLAS')
(30, 'SALES', 'CHICAGO')
(40, 'OPERATIONS', 'BOSTON')

PigScript1:

A = LOAD 'input' AS (line:chararray);
B = FOREACH A GENERATE REPLACE(line,'[\\\'\\(\\)]+','');
STORE B INTO 'output';

Pigscript2:

A = LOAD 'input' USING PigStorage(',') AS (col1:chararray,col2:chararray,col3:chararray);
B = FOREACH A GENERATE REPLACE(col1,'[\\(]+',''),REPLACE(col2,'[\\\']',''),REPLACE(col3,'[\\)\\\']+','');
STORE B into 'output1' USING PigStorage(',');

输出:将存储在output/part-m-00000文件中

10, ACCOUNTING, NEW YORK
20, RESEARCH, DALLAS
30, SALES, CHICAGO
40, OPERATIONS, BOSTON

关于apache-pig - 使用 Pig 从数据中删除单引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29119557/

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