作为我项目的一部分,我有一个CSV文件,其中包含逗号分隔值。但是很少有字段在引号中。因此,数据未正确加载。 例如:如果数据是==>>汽车,鹿,"熊,猫"
在上面的例子中,理想情况下应该有3列。但由于老鼠和垫子之间存在逗号,它被视为4列。田地"老鼠,垫子"没有棍棒,被认为是一个单一的领域。
请建议PIG中是否存在处理此类情况的内容
答案 0 :(得分:1)
您可以使用apache CSV library来处理此
答案 1 :(得分:0)
答案 2 :(得分:0)
你能试试吗?
的 input.csv 强>
car,deer,"bear,cat"
car,deer,"bear,cat"
PigScript:输出格式1:
A = LOAD 'input.csv' AS line;
B = FOREACH A GENERATE FLATTEN(REGEX_EXTRACT_ALL(line,'(\\w+),(\\w+),(.*)$')) AS (col1:chararray,col2:chararray,col3:chararray);
DUMP B;
<强>输出:强>
(car,deer,"bear,cat")
(car,deer,"bear,cat")
PigScript输出格式2:
A = LOAD 'input.csv' AS line;
B = FOREACH A GENERATE FLATTEN(REGEX_EXTRACT_ALL(line,'(\\w+),(\\w+),"(\\w+),(.*)"$')) AS (col1:chararray,col2:chararray,col3:chararray,col4:chararray);
DUMP B;
<强>输出:强>
(car,deer,bear,cat)
(car,deer,bear,cat)
答案 3 :(得分:-1)
public static void main(String[] args) {
// TODO code application logic here
String str = "c,b,\"c,d\"";
System.out.println(str);
if(str.contains("\"")){
str= str.replaceAll("\"", " ");
//System.out.println(str);
str = str.replaceAll(" ", "");
System.out.println(str);
}
}