【问题标题】:Spark SQL JDBC returning only column namesSpark SQL JDBC 仅返回列名
【发布时间】:2016-11-11 12:25:59
【问题描述】:

我正在使用 Scala 2.11 中的 Spark SQL 查询数据库表。我已经按照 Internet 中给出的示例进行操作。

我正在使用的数据库:Ubuntu 14.04 上的 mariadb 5.5 我正在查询的表 (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|
+-------+--------+---+---+

即重复每一行的列名而不给出数据。我的桌子有 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 apache-spark-sql mariadb


    【解决方案1】:

    解决了这个问题。是jdbc驱动

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

    这是导致问题的原因。使用 mysql 驱动程序,即

    'mysql: mysql-connector-java:5.1.6' 
    

    它就像一个魅力

    【讨论】:

      猜你喜欢
      • 2017-08-08
      • 2020-11-20
      • 1970-01-01
      • 2017-10-23
      • 1970-01-01
      • 2011-03-16
      • 2016-12-05
      • 1970-01-01
      • 2017-11-11
      相关资源
      最近更新 更多