簡體   English   中英

Spark Sql JDBC支持

[英]Spark Sql JDBC Support

目前,我們正在構建一個報告平台,作為我們使用Shark的數據存儲。 由於Shark的開發已停止,因此我們正處於評估Spark SQL的階段。 根據我們的用例,我們幾乎沒有問題。

1)我們有各種來源的數據(MySQL,Oracle,Cassandra,Mongo)。 我們想知道如何將這些數據導入Spark SQL? 我們可以使用任何實用工具嗎? 此實用程序是否支持持續刷新數據(將數據存儲上的新添加/更新/刪除同步到Spark SQL?

2)是一種在Spark SQL中創建多個數據庫的方法嗎?

3)對於Reporting UI,我們使用Jasper,我們希望從Jasper連接到Spark SQL。 當我們進行初始搜索時,我們了解到目前沒有消費者支持通過JDBC連接Spark SQL,但在將來的版本中,您希望添加相同的內容。 我們想知道什么時候Spark SQL會有一個可以獲得JDBC支持的穩定版本? 與此同時,我們從https://github.com/amplab/shark/tree/sparkSql獲取了源代碼,但我們在本地設置和評估它時遇到了一些困難。 如果您能幫助我們完成設置說明,那就太棒了。(我可以分享我們面臨的問題,請告訴我在哪里可以發布錯誤日志)

4)我們還需要一個SQL提示符,我們可以在其中執行查詢,目前Spark Shell提供SCALA提示符,其中SCALA代碼可以執行,從SCALA代碼我們可以觸發SQL查詢。 像Shark一樣,我們希望在Spark SQL中使用SQL提示符。 當我們進行搜索時,我們發現在將來發布的Spark中會添加。 如果你能告訴我們哪個版本的Spark會解決同樣問題,那將會很棒。

至於

3)Spark 1.1為SparkSQL ThriftServer接口提供了更好的支持,您可能希望將其用於JDBC接口。 支持v.1.02.0的Hive JDBC客戶端能夠連接和連接此類服務器。

4)Spark 1.1還提供了一個SparkSQL CLI接口,可用於輸入查詢。 與Hive CLI或Impala Shell的方式相同。

請提供有關您想要實現1和2的更多詳細信息。

我可以回答(1):

Apache Sqoop專門用於解決關系數據庫的這個問題。 該工具適用於HDFS,HBase和Hive - 因此可用於通過HDFS和Hive Metastore為Spark提供數據。

http://sqoop.apache.org/

我相信Cassandra可通過DataStax的連接器使用SparkContext: https//github.com/datastax/spark-cassandra-connector - 我從未使用過。

我不知道MongoDB的任何連接器。

1)我們有各種來源的數據(MySQL,Oracle,Cassandra,Mongo)

您必須為每種情況使用不同的驅動程序。 對於cassandra,有datastax驅動程序 (但我遇到了一些與SparkSQL的兼容性問題)。 對於任何SQL系統,您都可以使用JdbcRDD。 用法很簡單,請看scala示例

test("basic functionality") {
    sc = new SparkContext("local", "test")
    val rdd = new JdbcRDD(
      sc,
      () => { DriverManager.getConnection("jdbc:derby:target/JdbcRDDSuiteDb") },
      "SELECT DATA FROM FOO WHERE ? <= ID AND ID <= ?",
      1, 100, 3,
      (r: ResultSet) => { r.getInt(1) } ).cache()

    assert(rdd.count === 100)
    assert(rdd.reduce(_+_) === 10100)
  }

但是它只是一個RDD的概念,所以你應該通過map-reduce api來處理這些數據,而不是在SQLContext中。

我們可以使用任何實用工具嗎?

有Apache Sqoop項目,但它處於活動開發狀態。 目前的穩定版本甚至不保存鑲木地板格式的文件。

Spark SQL是Spark框架的一項功能。 它不應該與Shark相比,因為Shark是一種服務。 (回想一下,使用Shark,您運行ThriftServer,然后可以從Thrift應用程序甚至ODBC連接到。)

您能詳細說明“將此數據導入Spark SQL”的含義嗎?

有幾個Spark - MongoDB連接器: - hadoop的mongodb連接器(實際上根本不需要Hadoop!) https://databricks.com/blog/2015/03/20/using-mongodb-with- spark.html

如果您的數據很龐大並且需要執行大量轉換,那么Spark SQL可以用於ETL目的,否則presto可以解決您的所有問題。 逐個解決您的問題:

  1. 由於您的數據在MySQL,Oracle,Cassandra,Mongo中,所有這些都可以集成到Presto中,因為它具有所有這些數據庫的連接器https://prestodb.github.io/docs/current/connector.html

  2. 在群集模式下安裝Presto后,您可以在一個平台中查詢所有這些數據庫,這也提供了從Cassandra和Mongo的其他表連接表,這種靈活性是無與倫比的。

  3. Presto可用於連接Apache Superset https://superset.incubator.apache.org/ ,它是開源的,並提供所有集Dashboarding。 Presto也可以連接到Tableau。

  4. 您可以使用presto連接詳細信息安裝MySQL工作台,這有助於在一個位置為所有數據庫提供UI。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM