【发布时间】:2017-12-03 03:29:05
【问题描述】:
我正在使用 Simba Technologies Inc 的 JDBC 驱动程序来连接 Google Cloud Spanner。它使用 Java.sql 按预期运行。什么时候,我尝试将 simba JDBC 驱动程序与 Spark 的 JDBC 阅读器一起使用,以便将查询输出读取为 DataFrame,但是它给出了错误的输出。
这是我的扳手表:
UserID UserName
1 Vaijnath
2 Ganesh
3 Rahul
元数据:
用户 ID(字符串)
用户名(字符串)
我正在执行 Query 为:SELECT * FROM users
当我将 Simba JDBC 驱动程序与 Java Sql 一起使用时,此查询获取正确的数据,但当我将其与 Spark SQL 的 JDBC 阅读器一起使用时,它无法获取数据。
它将DataFrame返回为
+------+--------+
|UserID|UserName|
+------+--------+
|UserID|UserName|
|UserID|UserName|
|UserID|UserName|
+------+--------+
正如我们所见,它返回了正确的元数据和行数,但是,行包含列名。
这是我正在使用的代码:
import java.util.Properties
import org.apache.spark.sql.{DataFrame, SparkSession}
object spannerIn {
val sparkSession =SparkSession
.builder()
.appName("Spark SQL basic example").master("local")
.config("spark.sql.warehouse.dir", "file:///tmp")
.config("spark.sql.shuffle.partitions", 1)
.getOrCreate()
val properties =new Properties()
properties.setProperty("user", "")
properties.setProperty("password", "")
properties.setProperty("driver", "com.simba.cloudspanner.core.jdbc42.CloudSpanner42Driver")
val connectionURL="jdbc:cloudspanner://localhost;Project=abc;Instance=pqr;Database=xyz;PvtKeyPath=FilePath"
val selectQuery="(select * from users)"
def main(args: Array[String]): Unit = {
val df = createJdbcDataframe()
df.show()
}
def createJdbcDataframe(): DataFrame = {
sparkSession.read.jdbc(connectionURL, selectQuery, properties)
}
}
我的问题是,我可以将 Simba JDBC 驱动程序与 Spark 一起使用吗? 如果是,那么我需要添加什么额外的东西。 任何帮助表示赞赏。
【问题讨论】:
标签: apache-spark apache-spark-sql google-cloud-platform google-cloud-spanner