簡體   English   中英

Apache Spark-JDBC源

[英]Apache Spark - JDBC Sources

是否有人設法使用其內置的Spark SQL源而不是RDDJdbc通過JDBC使用1.3中發布的新功能通過JDBC提取數據或至少連接到RDBMS?

https://databricks.com/blog/2015/03/24/spark-sql-graduates-from-alpha-in-spark-1-3.html

我已經嘗試應用上面文章中提到的示例,但這沒有用,因為它給了我一個錯誤。 以為也許有人可以在scala中為我提供有關如何連接和查詢數據的完整示例。

是。 有兩種方法。

  1. 以編程方式使用SQLContext加載功能。

加載功能將JDBC數據源數據加載為DataFrame。 如果您希望將此DataFrame在以后的Spark SQL查詢中用作表,則必須使用

yourDataFrame.registerTempTable( “yourTableName”)

如果您想要完整的示例,請查看我的博客文章

  1. 使用SQL

我還沒有嘗試過。 根據我從文檔中讀取的內容,可以像下面的示例一樣完成此操作。

CREATE TEMPORARY TABLE yourTableName
USING org.apache.spark.sql.jdbc
OPTIONS (
  url "jdbc:postgresql:dbserver",
  dbtable "schema.tablename"
)

如您所料,它既可以加載數據,也可以在同一命令中將其注冊為表。

我當時認為SQLContext.sql函數可用於執行上述SQL DDL語句。 但這會引發您提到的相同錯誤。

失敗:預期為“插入”,但找到標識符CREATE

基於所有這些,我現在的結論是,當Spark對其執行數據庫操作時,該DDL語句應從SQL客戶端執行。 這意味着,如果您使用SparkThrift服務器從SQL工作台或任何其他SQL編輯器連接Spark,則可能會調用它。 如果成功,您也可以嘗試使用JDBC / ODBC驅動程序以編程方式進行操作,然后將其連接到Thrift服務器。

暫無
暫無

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

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