1. 程式人生 > >SparkSQL JDBC和JDBCServer區別

SparkSQL JDBC和JDBCServer區別

注意SparkSQL JDBC和SparkSQL JDBCSever是完全兩種不同的場景。

SparkSQL JDBC

SparkSQL可以使用JDBC的方式訪問其他資料庫,和普通非spark程式訪問jdbc的方式相同。只是Spark中訪問jdbc提供了介面能夠將得到的資料轉化成DataFrame。而操作資料庫的過程和Spark沒什麼關係。這個功能優先於使用JDBCRDD。因為它返回一個DataFrame,而DataFrame在SparkSQL中具有更加豐富的API,操作更加簡單,由於其具有結構化schema,所以更容易個來自其他的半結構化和結構化資料來源的資料進行互動關聯。

val jdbcDF = sqlContext.read.format("jdbc").options( Map("url" -> "jdbc:postgresql:dbserver", "dbtable" -> "schema.tablename")).load() 

SparkSQL JDBCServer

SparkSQL JDBCServer是Spark提供的一個獨立執行的driver,用於在其他應用中執行SparkSQL查詢。例如其他的非Spark應用,可能處於資料共享的原因,需要在一個Spark叢集上面執行一個SQL操作,它本身和Spark沒有什麼關係,也不需要安裝Spark執行環境,只是通過Spark提供的JDBC介面(不同於上面說的介面)將SQL命令下發到SparkSQL,後續的工作就是JDBCServer的事情了。