해결된 질문
23.11.24 17:23 작성
·
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
2023. 11. 25. 15:12
안녕하세요 jason.king님,
우선 제 강의를 수강해주시고 꼼꼼하게 학습해주시니 감사합니다.
밑에 mergeDD.collect() 를 로그를 찍어보면 아래와 같이 결과 값이 나오죠?
그리고 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