2016-11-11 3 views
1

Я запрашиваю таблицу базы данных, используя Spark SQL в Scala 2.11. Я следил за примерами, приведенными в Интернете.Spark SQL JDBC, возвращающий только имена столбцов

ДБ Я использую: MariaDB 5.5 на Ubuntu 14.04 таблице (ИСТОЧНИКИ) Я выполнение запроса имеет следующие столбцы:

`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| 
+-------+--------+---+---+ 

т. е. повторяет имена столбцов для каждого ро 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' 

и он работает как шарм

Смежные вопросы