인프런 커뮤니티 질문&답변

Jason.king님의 프로필 이미지

작성한 질문수

빅데이터 파이프라인 마스터; 성공을 위한 도구와 기술

[과제] 1번 2번 풀이

섹션7] 과제 2번 질문

해결된 질문

작성

·

310

1

섹션7] 과제2번 질문있습니다. 
users1 = [(0, "ALEX"), (1, "BERT"), (2, "CURT"), (3, "DONT")]
subs1 = [(0, "Writing"), (0, "Gym"), (1, "Swimming")]
userRDD = sc.parallelize(users1)
subsRDD = sc.parallelize(subs1)

mergedRDD = userRDD.rightOuterJoin(subsRDD)
mergedRDD.map(lambda value : value[1][0] + " loves " + value[1][1])

조인되어서 collect 되었을 때 데이터 구조가 
key (leftvalue, rightvalue) 이렇게 반복구조가 되는 것 같은데 
답이 ['ALEX loves Writing'] 이것만 나오는 것이 아니라 
['ALEX loves Writing', 'ALEX loves Gym', 'BERT loves Swimming']
이렇게 나오는 이유를 모르겠습니다. 

좋은 강의 잘 듣고 있습니다. 
감사합니다. 

 

아래와 같은 양식으로 질문을 남겨주세요 🙂

  • 수업을 들으시면 이해하기 어려운 부분이 있으면 상세히 질문을 남겨주세요.

  • 서로 Tone and Manner 를 지키며, 즐거운 수업 시간을 만들어보아요.

  • 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

 

답변 2

2

J.PHIL님의 프로필 이미지
J.PHIL
지식공유자

2023. 11. 25. 15:12

안녕하세요 jason.king님,

우선 제 강의를 수강해주시고 꼼꼼하게 학습해주시니 감사합니다.

밑에 mergeDD.collect() 를 로그를 찍어보면 아래와 같이 결과 값이 나오죠?

image

그리고 map 함수를 통해서 각각 element마다 위 lambda 식이 적용되면서
- value[1][0] : element 1번째 접근후 0번째 접근 value > alex, alex, bert
- value[1][1] : element 1번째 접근후 1번째 접근 value > writing, gym, swimmiing

mergedRDD.map(lambda value : value[1][0] + " loves " + value[1][1])

['ALEX loves Writing', 'ALEX loves Gym', 'BERT loves Swimming']

와 같은 결과 값을 얻게 됩니다.

만약 map(), flatMap() 이런 함수를 처음 접하시면 아직 익숙하지 않으실텐데, 3,4번 이상 비교하면서 사용해보시면서 금방 익숙해질수 있을겁니다 😀

 

 

0

Jason.king님의 프로필 이미지
Jason.king
질문자

2023. 11. 25. 21:02

강사님. 친절한 답변 감사합니다.

딱 저부분이 궁금했어요~ !!!!