Apache Pig バージョン 0.10.1.21 (reported) の使用
データサンプルファイルの内容:
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]
注: Pig がデータ型の不一致をどのように処理するかを確認するために、一部の列が意図的に交換されています (Radon と Plutonium の場合)。
豚のスクリプト:
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 が表示されることを期待していました。PropertyMap 列をマップ データ型として表示するために、豚のスクリプトまたはデータ ファイルを変更する方法を教えてください。
質問2 : マップ スキーマの宣言で、データ型を厳密に型指定したいと考えています。スキーマを PropertyMap:map[int, int, chararray] として宣言しましたが、pig は構文を拒否しました ( のエラー、右括弧が予想されます)。複数のキーを持つマップを宣言することは可能ですか? はいの場合、スキーマ宣言はどのようになりますか?
助けてくれてありがとう。