我想使用Apache Pig构建一个大键 - >值映射,在地图中查找并迭代键.然而,甚至似乎没有做这些事情的语法; 我检查了手册,维基,示例代码,象书,谷歌,甚至尝试解析解析器源.每个示例都从文件加载地图文字...然后从不使用它们.你怎么用Pig的地图?
首先,似乎没有办法直接将2列CSV文件加载到地图中.如果我有一个简单的map.csv:
1,2
3,4
5,6
Run Code Online (Sandbox Code Playgroud)
我尝试将其加载为地图:
m = load 'map.csv' using PigStorage(',') as (M: []);
dump m;
Run Code Online (Sandbox Code Playgroud)
我得到三个空元组:
()
()
()
Run Code Online (Sandbox Code Playgroud)
所以我尝试加载元组然后生成地图:
m = load 'map.csv' using PigStorage(',') as (key:chararray, val:chararray);
b = foreach m generate [key#val];
ERROR 1000: Error during parsing. Encountered " "[" "[ "" at line 1, column 24.
...
Run Code Online (Sandbox Code Playgroud)
语法的许多变体也会失败(例如generate [$0#$1]).
好的,所以我把我的地图变成Pig的地图文字格式map.pig:
[1#2]
[3#4]
[5#6]
Run Code Online (Sandbox Code Playgroud)
加载它:
m = load 'map.pig' as (M: []);
Run Code Online (Sandbox Code Playgroud)
现在让我们加载一些键并尝试查找:
k = …Run Code Online (Sandbox Code Playgroud)