是否可以编写将执行以下操作的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并获取ask key的值。我是否会走向错误的方向,这在PIG中是否可行?
答案 0 :(得分:1)
您可以使用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
<强>猪:强>
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)