小编1fr*_*ggy的帖子

如何在Apache Pig中使用map数据类型?

我想使用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)

syntax hadoop map apache-pig

21
推荐指数
1
解决办法
3万
查看次数

标签 统计

apache-pig ×1

hadoop ×1

map ×1

syntax ×1