2016-11-11 202 views
1

我在Scala 2.11中使用Spark SQL查詢數據庫表。我遵循互聯網上給出的例子。Spark SQL JDBC只返回列名

我使用DB:在Ubuntu 14.04 MariaDB的5.5表(來源)我查詢有以下欄目:

`srcname` char(60) NOT NULL, 
`endpoint` char(255) NOT NULL, 
`pan` char(60) NOT NULL, 
`vid` char(10) 

這裏是我的代碼:

val sparkSession = SparkSession.builder().master("local[*]").appName("somename").getOrCreate() 
val df1 = sparkSession.read 
.format("jdbc") 
.option("driver", "org.mariadb.jdbc.Driver") 
.option("url", url) 
.option("dbtable", "SOURCES") 
.option("user", username) 
.option("password", password) 
.load() 

df1.show() 

這給我以下輸出:

+-------+--------+---+---+ 
|srcname|endpoint|pan|vid| 
+-------+--------+---+---+ 
|srcname|endpoint|pan|vid| 
|srcname|endpoint|pan|vid| 
|srcname|endpoint|pan|vid| 
+-------+--------+---+---+ 

即重複每個ro的列名稱w而不提供數據。我的桌子有3排。我試過改變db中的行數,我的輸出也相應地改變了。

我也試着在各種網站上提到的其他方式:

val prop = new java.util.Properties 
prop.setProperty("user",username) 
prop.setProperty("password",password) 
prop.setProperty("driver","org.mariadb.jdbc.Driver") 

val df2 = sparkSession.read.jdbc(url, "SOURCES", "srcname", 0, 5, 1, prop) 
df2.show() 

這也給出了相同的輸出。

這裏是我的火花依賴關係:

compile 'org.apache.spark:spark-core_2.11:2.0.0' 
compile 'org.apache.spark:spark-sql_2.11:2.0.0' 

關於正在發生的事情錯在這裏任何幫助嗎?

回答

1

找出問題所在。這是jdbc驅動程序

'org.mariadb.jdbc:'mariadb-java-client:1.5.4' 

這是造成問題。二手MySQL驅動程序即

'mysql: mysql-connector-java:5.1.6' 

,它就像一個魅力