[HADOOP] JDBC를 통한 Spark SQL과 Apache Drill 통합
HADOOPJDBC를 통한 Spark SQL과 Apache Drill 통합
Apache Drill을 사용하여 HDFS의 CSV 데이터를 통해 수행 된 쿼리의 결과에서 Spark SQL DataFrame을 만들고 싶습니다. Spark SQL을 JDBC를 통해 Drill에 연결할 수 있도록 성공적으로 구성했습니다.
Map<String, String> connectionOptions = new HashMap<String, String>();
connectionOptions.put("url", args[0]);
connectionOptions.put("dbtable", args[1]);
connectionOptions.put("driver", "org.apache.drill.jdbc.Driver");
DataFrame logs = sqlc.read().format("jdbc").options(connectionOptions).load();
Spark SQL은 두 가지 쿼리를 수행합니다. 첫 번째 쿼리는 스키마를 가져오고 두 번째 쿼리는 실제 데이터를 검색합니다.
SELECT * FROM (SELECT * FROM dfs.output.`my_view`) WHERE 1=0
SELECT "field1","field2","field3" FROM (SELECT * FROM dfs.output.`my_view`)
첫 번째 방법은 성공적이지만 두 번째 방법에서는 Spark에서 큰 따옴표 안에 필드를 묶습니다. 이는 드릴에서 지원하지 않는 항목이므로 쿼리가 실패합니다.
누군가가이 통합 작업을 할 수 있었습니까?
고맙습니다!
해결법
-
==============================
1.jdbc connector를 사용하기 전에 JDBC Dialect를 추가하고 dialect를 등록 할 수있다.
jdbc connector를 사용하기 전에 JDBC Dialect를 추가하고 dialect를 등록 할 수있다.
case object DrillDialect extends JdbcDialect { def canHandle(url: String): Boolean = url.startsWith("jdbc:drill:") override def quoteIdentifier(colName: java.lang.String): java.lang.String = { return colName } def instance = this } JdbcDialects.registerDialect(DrillDialect)
from https://stackoverflow.com/questions/35476076/integrating-spark-sql-and-apache-drill-through-jdbc by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] Hadoop Hive가 소스를 목적지로 이동할 수 없음 (0) | 2019.06.17 |
---|---|
[HADOOP] 루프를 통해 hdfs 디렉토리 (0) | 2019.06.17 |
[HADOOP] Java를 사용하여 HDFS에서 파일 액세스 (0) | 2019.06.17 |
[HADOOP] .txt / .csv 파일을 ORC 형식으로 변환하는 방법 (0) | 2019.06.17 |
[HADOOP] Windows에서 실행 - 정확히 winutils가 무엇이며 왜 필요합니까? (0) | 2019.06.17 |