Csv 清管器使用PigStorage(';,';)加载地图

Csv 清管器使用PigStorage(';,';)加载地图,csv,map,apache-pig,Csv,Map,Apache Pig,我一直在尝试加载数据(CSV),如: txt=IPHONE、GA、美国、中国、[bucket#A、type#user、越狱#No]、app#u talkingtom、ios7 使用Apache Pig load语句: raw = LOAD text USING PigStorage(',') as (phone:chararray,loc:chararray,country:chaarray,ctype:chararray,kyval:map[],appname:chararray,osver:

我一直在尝试加载数据(CSV),如:

txt=IPHONE、GA、美国、中国、[bucket#A、type#user、越狱#No]、app#u talkingtom、ios7

使用Apache Pig load语句:

raw = LOAD text USING PigStorage(',') as (phone:chararray,loc:chararray,country:chaarray,ctype:chararray,kyval:map[],appname:chararray,osver:chararray);

gen = foreach raw generate appname;

DUMP gen;
我明白了

键入#用户而不是app#u talkingtom

我知道这是一个定界符(“,”)问题。我无法更改分隔符,因为文件太大。 如何使清管器负载正确映射?

在负载中尝试以下操作:

raw = LOAD text USING PigStorage(',') as (phone:chararray,loc:chararray,country:chaarray,ctype:chararray,kyval:map[chararray],appname:chararray,osver:chararray);

确保所有值都是映射中的字符

PigStorage将地图中的逗号(
[bucket#A,type#user,jailbreak#No]
)计算为分隔符

这就是为什么字段值与字段名不符的原因

PigStorage是一个非常简单的加载程序,它不处理特殊情况,例如嵌入式分隔符或转义控制字符;它将在分隔符的每个实例上拆分,而不考虑上下文。因此,在加载CSV文件时,建议使用带有逗号分隔符的存储,而不要使用带逗号分隔符的存储


(来源:)

你明白了吗?通过上面的脚本(IPHONE、GA、美国、CN、键入#user、jailbreak#No)),CSVExcelStorage()无法识别[作为地图。我是否错过了一些东西