2014-11-03 3 views
-1

그래서 저는 Spark RDD와 협력하고 있습니다. 나는 다음과 같은 형식이러한 형식의 키 값 쌍을 만들려면 어떻게해야합니까?

Actor1 Movie1 
     Movie2 
     Movie3 

Actor2 Movie4 
     Movie5 
     Movie6 

와 탭으로 구분 된 파일을 가지고 그리고 난 키가 배우이며, 값은 배우 주조되었던 영화 어디, 키 값 쌍을 만들려고합니다. 스칼라 또는 파이썬을 사용하여 어떻게 할 수 있습니까? 텍스트 파일을 읽고 다음과 같은 탭에서 줄을 나눌 수 있지만 키 값 쌍을 구성하는 방법을 모릅니다.

lines = sc.textFile("file") 
tuples = lines.map(lambda x: x.split("\t")); 
# how do I create key value pairs??? 

답변

1

할 수 없거나 적어도 그렇게해서는 안됩니다. 스파크의 요점은 다른 라인이 병렬로 처리 될 수 있다는 것입니다. 첫 번째 두 줄이 하나의 클러스터 노드에서 실행되고 두 번째 두 줄이 다른 클러스터 노드에서 실행되는 경우 두 번째 노드가 Movie3이 Actor1과 함께 이동한다는 것을 알 수있는 방법이 없습니다.

mapPartitions에는 행을 Iterator으로 사용하고 var을 사용하여 "현재"액터를 추적하는 기능을 사용할 수 있습니다. 입력 텍스트 파일을 분할하는 방법에주의를 기울이면 데이터가 손실되지 않을 수도 있습니다. 그러나 나는 당신이 더 나은 입력 형식을 찾아야한다고 촉구합니다.

+0

입력 파일이 그대로 주어 지므로 변경할 수 없습니다. – MetallicPriest

0

나는 비슷한 종류의 문제를 풀려고 노력하고있다.이 질문에 대한 결론은 무엇인가? 효과가 있니? 이런 종류의 문제를 해결하기 위해 mapPartion을 사용하는 방법은 무엇입니까?

관련 문제