:오라클 connetion 나는 다음과 같은 코드로 스파크 SQL에서 오라클 DB에 연결을 시도하고
우리는 스파크 SQL을 통해 오라클과 연결 기본적으로val dataTarget=sqlcontext.read.
format("jdbc").
option("driver", config.getString("oracledriver")).
option("url", config.getString("jdbcUrl")).
option("user", config.getString("usernameDH")).
option("password", config.getString("passwordDH")).
option("dbtable", targetQuery).
option("partitionColumn", "ID").
option("lowerBound", "5").
option("upperBound", "499999").
option("numPartitions", "10").
load().persist(StorageLevel.DISK_ONLY)
가 하나 개의 파티션에 대한 하나의 연결을 만듭니다 전체 RDD에 대해 생성됩니다. 이렇게하면 테이블에 거대한 데이터가있을 때 병렬 처리가 느슨해지고 성능 문제가 발생합니다. 내 코드에서는 option("numPartitions", "10")
을 전달하여 10 개의 연결을 만듭니다. 내가 아는 한 틀린 것을 정정하십시오. 오라클과의 연결 수는을 넘는 파티션 수와 같습니다.
오라클에 연결 제한이있을 수 있으므로 더 많은 연결을 사용하면 오류가 발생합니다.
은 java.sql.SQLException : ORA-02391 : 초과 나는 더 많은 파티션을 사용하는 경우
병렬 처리에 대한 더 많은 파티션을 만들려면 동시 SESSIONS_PER_USER 한계, 오류가 온다하지만 덜 넣으면 나는 성능 문제에 직면 . 단일 연결을 만들고 여러 파티션에 데이터를로드하는 다른 방법이 있습니까 (이것이 내 생명을 구할 것입니다).
좋습니다.
앞에서 말한 것처럼 하나의 연결 만 사용하면 성능에 영향을 미치고 병렬 처리가 느슨해집니다 –
"한 가지 연결을 만들고 데이터를 여러 파티션에로드하는 다른 방법이 있습니까?" 필자의 접근 방식으로 단일 Oracle 연결과 다중 파티션을 가진 Dataframe을 모두 가질 수 있다고 생각합니다. – tbone