샤딩이 애플리케이션 레이어에서 처리되는 PostgreSQL 머신의 프로덕션 샤드 클러스터가 있습니다. 생성 된 레코드에는 UUID가 아닌 시스템 생성 고유 식별자가 할당됩니다.이 식별자는 레코드가 저장되는 부분을 나타내는 0-255 값을 포함합니다.이 클러스터는 RDS에서 복제되므로 대량의 읽기 쿼리를 실행할 수 있습니다.스파크 및 샤드 된 JDBC 데이터 소스
나는 스파크 내에서이 데이터에 액세스하기위한 최선의 방법을 알아 내려고하고 있습니다.
내가 그럼 난 스파크 클러스터에서 유일한 것이다 이상적으로 각 노동자를이 데이터 집합을 분할 할 것 작은 데이터 세트에만 샤드 이름을 포함 (텍스트 파일), 즉, integration-shard-0
, integration-shard-1
등을 만드는 생각했다 하나의 샤드 이름 (그러나 나는 노동자에게 하나 이상의 샤드가있는 경우를 처리해야한다). 그런 다음 JdbcRDD
을 만들 때 실제로 해당 작업자에있는 각 샤드 이름에 대해 1 ... n과 같은 RDD를 만들고 결과 RDD를 병합합니다.
이 방법이 효과가있는 것처럼 보이지만이 경로로 들어가기 전에 다른 사람들이 비슷한 문제를 어떻게 해결했는지 알고 싶었습니다.
(나는 또한 스파크로 액세스됩니다 분석 처리를 위해 두 번째 데이터 센터로 사용할 별도의 카산드라 클러스터가 있습니다.)
['preferredLocations()'] (https://spark.apache.org/docs/latest/api/scala/#org.apache.spark.rdd.RDD)를 무시하는 자체 RDD 구현에 대해 생각해 보셨습니까? 각 스파크 파티션을 샤드에 할당 하시겠습니까? – climbage
'getPartitions'을 덮어 쓰는 RDD를 구현했습니다. 아래에 요지에 대한 링크를 게시 할 것입니다. – cfeduke