【发布时间】:2018-03-13 08:51:56
【问题描述】:
首先我使用这行代码构建了 sbt scala 应用程序来从 apache spark 中的 mysql 表中读取数据。
val spark = SparkSession.builder().master("local").appName("Fuzzy Match Analysis").config("spark.sql.warehouse.dir","file:///tmp/spark-warehouse").getOrCreate()
import spark.implicits._
var df = spark.read.format("jdbc")
.option("url", "jdbc:mysql://127.0.0.1:3306")
.option("dbtable","(select * from engine.ecl limit 1) as onerow")
.option("user", "root")
.option("driver", "com.mysql.jdbc.Driver")
.option("password", "root")
.load()
现在我正在尝试使用相同的方法从 spark shell 中的 mysql 表中读取数据
scala> var df = spark.read.format("jdbc").option("url","jdbc:mysql://127.0.0.1:3306").option("user","root").option("password","root").option("driver","com.mysql.jdbc.Driver").option("dbtable","(select * from engine.ecl limit 1) as onerow")
df: org.apache.spark.sql.DataFrameReader = org.apache.spark.sql.DataFrameReader@22e253c7
但是当我尝试使用 df.show() 方法查看行中的内容时,它给了我以下错误。
scala> df.show()
<console>:26: error: value show is not a member of org.apache.spark.sql.DataFrameReader
df.show()
我尝试通过添加这些行来解决依赖关系
\spark-2.2.0-bin-hadoop2.7\conf\spark-defaults.conf.template
spark.driver.extraClassPath = C:/Program Files/MySQL/mysql-connector-java-5.1.36.jar spark.executor.extraClassPath = C:/Program Files/MySQL/mysql-connector-java-5.1.36.jar
【问题讨论】:
-
谢谢先生,但是还有两件事我应该在这里提到 1. 我添加了 spark.driver.extraClassPath = C:/Program Files/MySQL/mysql-connector-java-5.1.36.jar spark.executor.extraClassPath = C:/Program Files/MySQL/mysql-connector-java-5.1.36.jar spark-defauls.conf.template 文件,但我还需要将此文件重命名为 spark-defauls.conf 我也需要使用这一行创建类的新实例 Class.forName("com.mysql.jdbc.Driver").newInstance
标签: mysql apache-spark integration