오라클의 스파크 쿼리(로드)가 SQOOP에 비해 매우 느린 이유는 무엇입니까?
Oracle 데이터베이스에서 Spark의 API로 데이터를 로드하는 작업이 Spark 1.3 이후 현재 Spark 2.0.1까지 항상 느리다는 것을 발견했습니다.일반적인 코드는 자바에서 다음과 같은 것입니다.
Map<String, String> options = new HashMap<String, String>();
options.put("url", ORACLE_CONNECTION_URL);
options.put("dbtable", dbTable);
options.put("batchsize", "100000");
options.put("driver", "oracle.jdbc.OracleDriver");
Dataset<Row> jdbcDF = sparkSession.read().options(options)
.format("jdbc")
.load().cache();
jdbcDF.createTempView("my");
//= sparkSession.sql(dbTable);
jdbcDF.printSchema();
jdbcDF.show();
System.out.println(jdbcDF.count());
저희 멤버 중 한 명이 이 부분을 커스터마이징하려고 시도한 적이 있는데 그때 많이 좋아졌어요(Spark 1.3.0).하지만 스파크 코어 코드의 일부가 스파크 내부가 되어 버전 이후에는 사용할 수 없습니다.또한 HADOOP의 SQOOP은 이 부분의 경우 Spark보다 훨씬 빠릅니다(하지만 HDFS에 쓰기 때문에 Spark 용도의 Dataset으로 변환하려면 많은 작업이 필요합니다).Spark의 Dataset 쓰기 방법을 사용하여 Oracle에 쓰는 것이 우리에게 좋을 것 같습니다.왜 이런 일이 생기는지 헷갈리네요!
음 @PauZ Wu는 이미 댓글로 질문에 답했지만 문제는options.put("batchsize", "100000");
이것은 필요했습니다.options.put("fetchsize", "100000");
fetch size는 한 번에 데이터베이스에서 검색되는 행의 양을 제한하는 것을 다루기 때문에 로드 시간이 더 빨라집니다.
자세한 정보는 여기에서 확인할 수 있습니다: https://docs.oracle.com/cd/A87860_01/doc/java.817/a83724/resltse5.htm
언급URL : https://stackoverflow.com/questions/40007997/why-does-spark-query-load-from-oracle-is-so-slow-comparing-to-sqoop
'programing' 카테고리의 다른 글
Jquery AJAX로 페이지 프레임 로드 (0) | 2023.10.18 |
---|---|
코드 점화기 트랜잭션 (0) | 2023.10.18 |
오라클 SQL 개발자의 사용자 스니펫을 쉽게 백업할 수 있는 방법이 있습니까? (0) | 2023.10.18 |
워드프레스:대량의 모든 게시물에서 "분류되지 않은" 범주를 제거하려면 어떻게 해야 합니까? (0) | 2023.10.18 |
JS를 사용하지 않고 이미지를 끌거나 선택할 수 없도록 방지 (0) | 2023.10.18 |