2016-02-18 29 views
5

Apache Matkap ile CSV verileri (HDFS üzerinde) üzerinden gerçekleştirilen bir sorgunun sonuçlarından bir Spark SQL DataFrame oluşturmak istiyorum. şemasını almak ilk ve gerçek verileri almak için ikinci bir:SparkBC ve Apache Matkaplarının JDBC ile Bütünleştirilmesi

SELECT * FROM (SELECT * FROM dfs.output.`my_view`) WHERE 1=0 

SELECT "field1","field2","field3" FROM (SELECT * FROM dfs.output.`my_view`) 

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(); 

Kıvılcım SQL iki sorgu gerçekleştirir: Ben başarıyla yapılandırıldı Kıvılcım SQL o JDBC üzerinden Matkap bağlanmak yapmak

Birincisi başarılı, ancak ikinci bir Spark alanları çift tırnak içine alır, bu da Drill'in desteklemediği bir şeydir, bu nedenle sorgu başarısız olur.

Birisi bu entegrasyonun çalışmasını sağladı mı?

Teşekkür ederiz!

cevap

1

bunun için JDBC Dialect ekleyebilir ve Scala ama OP'ın soru Java gibi bu görünüyor

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) 
+0

jdbc bağlayıcı kullanmadan önce lehçesini kaydedebilirsiniz. – paisanco

+0

Doğru, yine de JdbcDialect'e işaret ettiği için cevabı kabul ediyorum. Teşekkürler! –