我知道map
是一个函数而不是列表方法的原因。但有没有办法可以使用map函数将数据传递给map中调用的函数。
这是我的代码:
def func1(lines):
global newlst
for line in lines:
qtype = re.search("qtype=(\S+)",str(line))
......
file = sc.textFile("C:\\TestLogs\\sample.log").cache()
result = file.map(lambda x: x.split("\n")).collect()
print(type(result)) #it is a list
lines = result.map(func1).collect() #I want to pass the contents of result to func1 through map function.
错误:
lines = result.map(func1).collect()
AttributeError: 'list' object has no attribute 'map'
我是否有其他方式可以将数据从results
传递到func1
,但是使用map
或生成rdd的spark中的任何概念?
答案 0 :(得分:1)
问题在于你调用collect来存储RDD的结果:
result = file.map(lambda x: x.split("\n")).collect()
此命令将返回一个列表,而不是RDD。
如果您从此行中删除collect()
,请执行以下操作:
result = file.map(lambda x: x.split("\n"))
这将有效。