Spark SQL JDBC 只返回列名
Spark SQL JDBC returning only column names
我正在使用 Scala 2.11 中的 Spark SQL 查询数据库 table。我遵循了互联网上给出的示例。
我正在使用的数据库:Ubuntu 14.04 上的 mariadb 5.5
我查询的 table (SOURCES) 有以下列:
`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|
+-------+--------+---+---+
即在不提供数据的情况下重复每一行的列名。我的 table 有 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()
这也给出了相同的输出。
这是我的 spark 依赖项:
compile 'org.apache.spark:spark-core_2.11:2.0.0'
compile 'org.apache.spark:spark-sql_2.11:2.0.0'
关于这里出了什么问题的任何帮助?
解决了问题。它是 jdbc 驱动程序
'org.mariadb.jdbc:'mariadb-java-client:1.5.4'
这是导致问题的原因。使用 mysql 驱动程序,即
'mysql: mysql-connector-java:5.1.6'
而且效果很好
我正在使用 Scala 2.11 中的 Spark SQL 查询数据库 table。我遵循了互联网上给出的示例。
我正在使用的数据库:Ubuntu 14.04 上的 mariadb 5.5 我查询的 table (SOURCES) 有以下列:
`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|
+-------+--------+---+---+
即在不提供数据的情况下重复每一行的列名。我的 table 有 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()
这也给出了相同的输出。
这是我的 spark 依赖项:
compile 'org.apache.spark:spark-core_2.11:2.0.0'
compile 'org.apache.spark:spark-sql_2.11:2.0.0'
关于这里出了什么问题的任何帮助?
解决了问题。它是 jdbc 驱动程序
'org.mariadb.jdbc:'mariadb-java-client:1.5.4'
这是导致问题的原因。使用 mysql 驱动程序,即
'mysql: mysql-connector-java:5.1.6'
而且效果很好