Csv 清管器使用PigStorage(';,';)加载地图
我一直在尝试加载数据(CSV),如: txt=IPHONE、GA、美国、中国、[bucket#A、type#user、越狱#No]、app#u talkingtom、ios7 使用Apache Pig load语句: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:
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()无法识别[作为地图。我是否错过了一些东西