2016-10-27 6 views
2

mapはリストのメソッドではなく、その原因であることがわかりました。しかし、マップ関数を使用して、内部マップと呼ばれる関数にデータを渡す方法があります。'list'オブジェクトには属性 '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' 

私はしかしmapまたは生成スパークのいずれかの概念を使用してresultsからfunc1に自分のデータを渡すことができ、他の方法はありますrdd?

+2

'.collect()' –

答えて

1

問題は、あなたがここにRDDの結果を格納するために集めるの呼び出しである:

result = file.map(lambda x: x.split("\n")).collect() 

このコマンドを使用するには、リストではなく、RDDを返します。あなたはこのようにこの行からcollect()を削除する場合 :

result = file.map(lambda x: x.split("\n")) 

これは動作します。

関連する問題