Spark 동기 화 데이터 가 온라인 데이터베이스 에 있 는 구덩이

1047 단어 빅 데이터Python
배경
PySpark 추출 데 이 터 를 데이터베이스 에 동기 화 할 때(예 를 들 어 clickhouse,my sql 등 데이터베이스)RDD 의 foreachPartition,mapPartitions 또는 mapPartitionsWithIndex 등 함 수 를 사용 하면 어떤 데이터 가 여러 번 동기 화 되 어 중복 데이터 문 제 를 일 으 키 는 것 을 발견 할 수 있 습 니 다.
원인 및 해결 방안mapPartitionsWithIndex 의 함 수 를 통 해 partitionIndex 을 인쇄 한 다음 에 로그 에서 보 는 방식 으로 원인 을 찾 을 수 있 습 니 다.종합 적 으로 분석 하면 다음 과 같은 세 가지 원인 으로 인해 발생 할 수 있 습 니 다.
  • 1.코드 에 spark 를 설정 하여 spark.speculation=true(기본 값 은 false)을 실행 할 것 으로 추정 합 니 다.이 매개 변 수 는 같은 task(백업 작업)를 동시에 시작 하여 같은 데이터 블록 을 처리 하고 어느 것 이 일찍 완성 되 었 는 지,어떤 task 의 결 과 를 사용 하 는 동시에 다른 task 를 종료 하 는 역할 을 합 니 다.동기 화 데이터 의 장면 에 대해 이 매개 변 수 는 spark.speculation=false
  • 으로 설정 해 야 합 니 다.
  • 2.Spark 의 RDD 의 아버지 가 재 계산 체제 에 의존 하기 때문에 하 유자 RDD 가 실 행 될 때 상류 에 캐 시 되 지 않 은 RDD 를 다시 계산 할 수 있 습 니 다.이때 이 동기 데이터 연산 자 를 실행 한 후 persist
  • 을 권장 합 니 다.
  • 3,executor 의 실패 재 시도 로 인해 우연 한 사건 이 발생 할 수 있 으 므 로 동기 화 를 권장 합 니 다. .
  • 좋은 웹페이지 즐겨찾기