使用 Apache Pig 版本 0.10.1.21(重新导出)
数据样本文件内容:
AtomicNumber,ElementName,Symbol,AtomicMass,PropertyMap
46,Palladium,Pd,106.42,[P#46,N#60,Struc#Cubic]
49,Indium,In,114.818,[P#49,N#66,Struc#Tetragonal]
52,Tellurium,Te,127.6,[P#52,N#76,Struc#Hexagonal]
86,Radon,222.0,Rn,[P#86,N#136,Struc#Cubic]
38,Strontium,Sr,87.62,[P#38,N#50,Struc#Cubic]
Plutonium,94,Pu,244.0,[P#94,N#150,Struc#Monoclinic]
注意:有意交换某些列(对于 Radon 和 Plutonium),以查看 Pig 如何处理数据类型不匹配
猪脚本:
AtomElem = LOAD 'data/Atoms.txt' USING PigStorage(',') AS (AtomicNumber:int, ElementName:chararray, Symbol:chararray, AtomicMass:float, PropertyMap:map[]);
DUMP AtomElem;
结果:
(,ElementName,Symbol,,)
(46,Palladium,Pd,106.42,)
(49,Indium,In,114.818,)
(52,Tellurium,Te,127.6,)
(86,Radon,222.0,,)
(38,Strontium,Sr,87.62,)
(,94,Pu,244.0,)
问题1:我希望显示 PropertyMap。您能否告诉我如何修改 pig 脚本或数据文件,以便将 PropertyMap 列显示为地图数据类型。
问题2:在地图模式的声明中,我想强类型数据类型。我将架构声明为 PropertyMap:map[int, int, chararray] 但 pig 拒绝了语法(错误,预计右括号)。是否可以声明具有多个键的地图?如果是,架构声明应该是什么样的?
提前感谢您的帮助。