在Spark SQL中加载JDBC表时数据不正确

时间:2016-08-06 20:33:07

标签: java jdbc apache-spark apache-spark-sql mariadb

我在MariaDB中创建了一个包含2行数据的表“学生”:

id name      marks
-- --------- -----
1  saptarshi 98
2  sagar     95

我想用JDBC在spark-sql中读取这个表,所以我打开了spark-shell并执行了以下命令:

spark-shell --jars mariadb-java-client-1.5.0-RC1.jar
scala> val url = "jdbc:mariadb://localhost:3306/sparkdb"
scala> val driver = "org.mariadb.jdbc.Driver"
scala> val df = sqlContext.read.format("jdbc").option("url", url).option("driver", driver).option("dbtable", "students").option("user", "cloudera").option("password", "cloudera").load()

scala> df.printSchema
root
|-- id: integer (nullable = false)
|-- name: string (nullable = true)
|-- marks: integer (nullable = true)

架构已正确加载,因此我想显示“名称”列。

scala> df.select("name").show
+----+
|name|
+----+
|name|
|name|
+----+

它不是显示行,而是在两个记录中显示列名。

为什么我的结果不正确?任何人都可以帮助我。

1 个答案:

答案 0 :(得分:0)

我已经使用其他数据库(如Oracle和Derby)对此进行了测试。他们产生正确的结果。此问题仅适用于MariaDB。