是否可以编写将执行以下操作的 UDF 函数
records = load INPUT using PigStorage() AS (vin:chararray , longString:chararray);
simpleData = foreach records generate vin , myUdfFunctionGetValue(longString , 'someKey');
这里 longString 的结构是 "key:Value;key2:Value2,someKey:Value3...."
所以我需要解析 longString 并获取询问键的值。我会走错方向吗?这在 PIG 中可能吗?
最佳答案
您可以使用 Python UDF 轻松完成此操作。
UDF:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
@outputSchema("output:chararray")
def key_value_parser(s, k):
try:
d = dict([x.split(':') for x in s.split(';')])
return d[k]
except:
return None
pig :
REGISTER '/root/path/name_of_udf.py' USING jython as udf;
data = LOAD 'input' USING PigStorage() AS (vin:chararray, longString:chararray);
parsedString = FOREACH data GENERATE udf.key_value_parser(longString, 'key3');
DUMP parsedString;
假设 longString
的形式是 key1:Value1;Key2:Value2;key3:Value3; ...
输出:
(Value3)
关于java - foreach 生成循环中的 Hadoop PIG 自定义 UDF 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26120971/