Spark操作mysql出错

k_c_u_f 2017-08-10 06:38:39
代码:

// 设置运行环境
val conf = new SparkConf().setAppName("LDA Test")
.setMaster("spark://master:7077").setJars(Seq("E:\\Intellij\\Projects\\MachineLearning\\MachineLearning.jar"))
val sc = new SparkContext(conf)
Logger.getRootLogger().setLevel(Level.WARN)

// 连接MySQL数据库
case class Article(id:Int,article:String)
case class Word(id:Int,word:String)
case class Vocabulary(id:Int,word_id:Int,article_id:Int,count:Int)
val sqlContext = new org.apache.spark.sql.SQLContext(sc)
import sqlContext.implicits._
val url = "jdbc:mysql://192.168.1.101:3306/machinelearning"
val table_article = "article"
val table_word = "word"
val table_vocabulary = "vocabulary"
val reader = sqlContext.read.format("jdbc")
reader.option("url", url)
reader.option("driver", "com.mysql.jdbc.Driver")
reader.option("user", "hadoop")
reader.option("password", "root")
reader.option("dbtable", table_article)
val df_article = reader.load()
reader.option("dbtable", table_word)
val df_word = reader.load()
reader.option("dbtable", table_vocabulary)
val df_vocabulary = reader.load()
val vocuRDD = df_vocabulary.collect()

df_article.show()
df_word .show()
df_vocabulary.show()

// 记录属性
val prop = new java.util.Properties
prop.setProperty("user", "hadoop")
prop.setProperty("password", "root")
prop.setProperty("driver", "com.mysql.jdbc.Driver")

// 读取样本数据并解析
val textRDD = sc.textFile("hdfs://master:9000/ml/data/Article_01.txt")
val wordRDD = textRDD.flatMap(line => line.split("\\s+")).map(word => (word, 1)).reduceByKey((x, y) => x + y)
println("-----------------------------------------------------------------------")
wordRDD.collect().foreach(p => {
println(p)
var isWrite = true
breakable{
vocuRDD.foreach(q => {
if (p._1.toInt == q.getInt(1)){
// 已经存在这个单词则不写入
isWrite = false
break
}
}
)
}
// 该单词写入表vocabulary
if (isWrite){
prop.setProperty("Word",p._1)
df_vocabulary.write.mode(SaveMode.Append).jdbc(url, table_vocabulary, prop)
// df_vocabulary.save
}
})


编译以后运行,可以从mysql中读取数据,但是运行到
df_vocabulary.write.mode(SaveMode.Append).jdbc(url, table_vocabulary, prop)

这一行就出错,提示
17/08/10 18:34:04 WARN TaskSetManager: Lost task 0.0 in stage 34.0 (TID 36, slave03): java.sql.SQLException: No suitable driver found for jdbc:mysql://192.168.1.101:3306/machinelearning
我看了一下Externa Library里面有这个包,而且前面读取mysql都是正常的啊?为什么写入就会报这个错误?
...全文
279 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
火山1 2017-08-14
  • 打赏
  • 举报
回复
spark 有环境变量配置脚本 spark-env.sh
k_c_u_f 2017-08-10
  • 打赏
  • 举报
回复
引用 4 楼 link0007 的回复:
[quote=引用 3 楼 k_c_u_f 的回复:] [quote=引用 2 楼 link0007 的回复:] 你每个worker都放了驱动jar包了吗?
应该放哪里呢?[/quote] 和运行driver的那台机器相同的目录[/quote] 我的driver是win7,worker是centos
LinkSe7en 2017-08-10
  • 打赏
  • 举报
回复
引用 3 楼 k_c_u_f 的回复:
[quote=引用 2 楼 link0007 的回复:] 你每个worker都放了驱动jar包了吗?
应该放哪里呢?[/quote] 和运行driver的那台机器相同的目录
k_c_u_f 2017-08-10
  • 打赏
  • 举报
回复
引用 2 楼 link0007 的回复:
你每个worker都放了驱动jar包了吗?
应该放哪里呢?
LinkSe7en 2017-08-10
  • 打赏
  • 举报
回复
你每个worker都放了驱动jar包了吗?
LinkSe7en 2017-08-10
  • 打赏
  • 举报
回复
你每个driver都放了驱动jar包了吗?

1,258

社区成员

发帖
与我相关
我的任务
社区描述
Spark由Scala写成,是UC Berkeley AMP lab所开源的类Hadoop MapReduce的通用的并行计算框架,Spark基于MapReduce算法实现的分布式计算。
社区管理员
  • Spark
  • shiter
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧