这个问题有两个部分:
首先,我有一个python自定义项,它创建了一个长度未知的字符串列表。udf的输入是 map
( dict
在python中),键的数量基本上是未知的(这是我试图获得的)。
我不知道的是如何在一个模式中输出它,让我以列表的形式返回它(或者其他一些可编辑的数据结构)。到目前为止,我的情况是:
@outputSchema("?????") #WHAT SHOULD THE SCHEMA BE!?!?
def test_func(input):
output = []
for k, v in input.items():
output.append(str(key))
return output
现在,问题的第二部分。一旦在pig中,我想为我的所有用户对“list”中的每个元素应用sha散列。一些伪代码:
USERS = LOAD 'something' as (my_map:map[chararray])
UDF_OUT = FOREACH USERS GENERATE my_udfs.test_func(segment_map)
SHA_OUT = FOREACH UDF_OUT GENERATE SHA(UDF_OUT)
最后一行可能是错误的,因为我想将sha应用于列表中的每个元素,而不是整个列表。
1条答案
按热度按时间ecbunoof1#
为了回答您的问题,因为您返回的python列表的内容是字符串,所以您希望您的decorator是
在指定这个结构时可能会混淆,因为您只需要定义包中的一个元素是什么样子。
也就是说,有一个更简单的方法来做你需要的事情。有一个函数
KEYSET()
(你可以参考我回答的这个问题)这将从PigMap中提取钥匙。因此,使用该示例中的数据集并向第一个添加更多的键,因为您说过Map内容的长度是可变的查询:
输出: