我想将list作为值从mapper传递到reducer阶段。当前,reducer将list作为字符串读取。有没有一种方法可以确保python可以将其解释为一个列表。
9njqaruj1#
hadoop流媒体使用 stdin 以及 stdout 用于通信;因此,进入每个后续作业的所有内容都将是一个字符串。您可以在表示中使用某种分隔符,例如逗号:
stdin
stdout
the, items, in, my, list
然后在减速机里把它们分开:
for line in sys.stdin: data = line.split(',')
如果你想把它变成一本字典:
import ast for line in sys.stdin: dict = ast.literal_eval("{'waffle': 'delicious', 'pancake': 'mediocre'}")
因为您正在读取标准输入流,所以无法知道它是一个列表。
pod7payv2#
在reducer中使用ast.literal\u eval('str\u val'),并将字符串转换为list。有关更多信息,请参阅https://docs.python.org/2/library/ast.html
2条答案
按热度按时间9njqaruj1#
hadoop流媒体使用
stdin
以及stdout
用于通信;因此,进入每个后续作业的所有内容都将是一个字符串。您可以在表示中使用某种分隔符,例如逗号:然后在减速机里把它们分开:
如果你想把它变成一本字典:
因为您正在读取标准输入流,所以无法知道它是一个列表。
pod7payv2#
在reducer中使用ast.literal\u eval('str\u val'),并将字符串转换为list。有关更多信息,请参阅https://docs.python.org/2/library/ast.html