inflearn logo
강의

講義

知識共有

シリコンバレーのエンジニアから学ぶPython Apache Spark

Broadcast(ブロードキャスト)の紹介とブロードキャストジョイン方法を学ぶ

broadcast 코드 예시 관련 질문

解決済みの質問

129

one0

投稿した質問数 1

0

안녕하세요.

broadcast 예제코드에서는 이미 aggregation된 dataframe(코드에서 interviwer_count)에 대해서 udf 실행을 위해서 meta 딕셔너리를 broadcast한 다음에 udf를 실행하는 것으로 이해하였는데요.

실제 운영하는 상황에서는 이런 경우에는 이미 aggregation이 된 dataframe이 먼저 만들어질 것이기 때문에 meta 딕셔너리를 dataframe으로 만든 후 join하는 것과 큰 차이가 없지 않나요?

해당 코드에서 broadcast를 함으로써 다른 방법(join 등)에 비해 얻는 이점이 어떤 건지 궁금합니다.

머신러닝 빅데이터 apache-spark

回答 2

0

altoformula

안녕하세요 워농님,

좋은 질문 감사합니다. 제가 연말이라 바쁘다보니 답변이 늦었는데, AI가 답변을 해줬네요 ㅎㅎ.

일단 워농님이 말씀하신 부분도 맞고 AI가 대답한 부분도 맞습니다. 여기 실습에서는 어떤 식으로 작동을하는지 보여드릴려고 이렇게 작성을 했고, 실질적인 프로젝트에서는 두개의 데이터를 조인할 때 하나의 데이타가 다른 데이터에 비해 상당히 작고, 메모리에 들어갈 경우에 이런 식으로 조인합니다. 기본적인 셔플 조인은 노드끼리 Shuffle이 많이 일어나기 때문에 훨씬 느리기 때문이죠.
혹시 더 질문 있으시면 남겨주세요!

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다.

워농님께서 질문하신 broadcast 예제 코드에 관한 사항을 이해하기 위해 몇 가지 지적하신 부분을 요약하자면, 이미 aggregation된 데이터에 대해 UDF를 실행할 때, broadcast 변수를 사용하는 것과 dataframe을 만든 후 join하는 방식의 차이에 대한 것입니다.

Broadcast 변수를 사용하는 가장 큰 이유는 작은 데이터셋을 각 노드의 메모리에 저장하여 네트워크 병목을 줄이고, 노드 간 통신 비용을 최소화하려는 데 있습니다. 이런 접근은 주로 다음과 같은 상황에서 이점을 제공합니다:

  1. Broadcast의 메모리 효율성: Broadcast는 작은 사이즈의 데이터셋을 클러스터의 모든 노드에 복제하여 빠르게 접근할 수 있습니다. 상대적으로 view 작업이 많지 않은 데이터라면 전체 네트워크 간의 통신 비용을 최소화할 수 있습니다.

  2. 작업 성능 향상: join 연산은 일반적으로 데이터를 섞어 처리하게 되므로 많은 양의 데이터 셔플링이 발생할 수 있습니다. 하지만, 작은 데이터셋을 broadcast하면, 이러한 셔플링 과정을 피하게 되어 성능이 개선될 수 있습니다.

  3. 코드의 유연성: Broadcast를 사용하면, 특정 key-value 쌍처럼 작은 크기의 데이터를 복잡한 UDF 내에서 쉽게 참조할 수 있게 되어, 코드 가독성과 유지보수 측면에서도 장점이 있습니다.

— 관련된 기존 게시글 —
- 대용량 데이터 Join: 이 게시물에서는 Spark에서 데이터 Join 방법과 발생할 수 있는 문제점들, 그리고 이를 다룰 수 있는 다양한 테크닉들에 대해 설명하고 있습니다. 워농님이 궁금해 하시는 join에 관련한 기술적인 부분도 다뤄지고 있으니 참고하시면 도움이 될 것입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

databricks에 cluster 메뉴가 없습니다.

0

49

2

주피터 사용 및 도커 설치

0

94

2

S3 폴더 구조에 따른 Static Partition Pruning, DPP 질문

0

77

2

broadcast Join과 boradcast + UDF 차이

0

63

2

append 모드 사용 시 집계

0

67

2

CDC 기반 스파크 아키텍처 구현 방법이 궁금합니다.

0

108

2

BroadCast 지원 가능 메모리 문의

0

90

2

rdd, dataframe, spark sql 각각 언제 사용할까요?

0

189

2

강의 후반부에 나온 실습 코드는 어디서 받을 수 있나요?

0

203

3

cdc 기반의 스트리밍 데이터 처리

1

231

2

재생에 문제가 생겼어요 라는 메세지가 자꾸 뜨네요

0

116

1

스트리밍 예제 실행 시 py4j.protocol.Py4JNetworkError 발생

0

215

2

Repartition과 Coalesce에 대해 궁금한 점이 있어요!

1

166

1

pyspark 현업에서 로컬 개발 및 운영

1

338

1

Spark Structured Streaming Gracefully shutdown 질문

1

448

2

PySpark Runtime Architecture 내용 중 질문이 있습니다!

1

214

1

docker 설치 이후에 터미널 여는 부분에서 막혔습니다

1

461

2

app-<timestamp>-<executor_id> 폴더가 spark-events 내부에 생기게 하고 싶습니다.

1

277

1

pyspark.SparkContext 실행 오류 관련 질문

2

380

1

스파크 아키텍쳐 관련 문의 드립니다.

1

353

2

3.0에서 추가된 shuffle_hash, shuffle_replicate_nl hint는 어떤 상황에서 쓰는게 좋을까요?

1

320

1

데이터 엔지니터의 현 트렌드가 궁금합니다

1

473

1

스칼라강의도 제작하신다고 하셨는데 계획하고 계실까요??

1

297

2

pyspark / spark 차이점 질문드립니다.

1

1161

1