0

csv 파일에 75 개의 전자 상거래 고객 계정 데이터 데이터가 있습니다.Apache spark 또는 큰 데이터 도구를 사용하여 기본 키를 기반으로 여러 테이블을 분할하십시오.

또한 트랜잭션 레코드가 다른 파일에 있습니다. 여기서 계정 번호는 기본 키입니다. 모든 계정의 평균 거래가 500 회입니다.

이제이 데이터를 처리하고 프로모션 코드 제공에 대한 결정을 내리고 싶습니다. 데이터의 양이 매우 많기 때문에 SparkSQL을 사용하기로 결정했습니다.

그러나이 두 테이블을 조인 할 때 클러스터 노드간에 많은 차이가있을 수 있습니다. 이 클러스터링을 피하고 싶습니다.

계정의 '트랜잭션 데이터와 동일한 파티션에있는 데이터'를 확인할 수 있다면 그 경우. 어떻게해야합니까?

임시 해결 방법은 7500 만 개의 계정을 75 개의 파일로 나누어 각각 1 백만 개의 계정으로 나눌 수 있습니다. 비슷한 방식으로 거래를합니다. 75 스팍 인스턴스를 스핀 업하여 모두 처리하십시오. 이것을 할 수있는 다른 방법이 있습니까?

답변

1

트랜잭션 및 계정 세부 정보는 데이터 프레임이 다르며 동일한 파티션에있을 수 없습니다.

그러나 하이브 버킷을 사용하여 셔플을 줄일 수 있습니다. accountId (정렬을 적용 할 수도 있음)를 통해 파일 양동이를 모두 저장할 수 있습니다. 그런 식으로 조인 불꽃을하면 셔플을하지 않습니다.

스파크 2.0으로 하이브 버킷 팅에 대해 더 잘 이해하려면 this

을 확인하십시오.