日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

spark-shell连接数据库java.sql.SQLSyntaxErrorException: Unknown databas

發布時間:2023/12/31 数据库 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 spark-shell连接数据库java.sql.SQLSyntaxErrorException: Unknown databas 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

完整報錯如下:

2020-05-05 11:16:50 WARN ?TaskSetManager:66 - Lost task 1.0 in stage 9.0 (TID 47, Laptop, executor 2): java.sql.SQLSyntaxErrorException: Unknown database 'leaf'at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:120)at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:836)at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:456)at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:246)at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:197)at java.sql.DriverManager.getConnection(DriverManager.java:664)at java.sql.DriverManager.getConnection(DriverManager.java:247)at $line57.$read$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$anonfun$1.apply(<console>:28)at $line57.$read$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$anonfun$1.apply(<console>:26)at org.apache.spark.rdd.JdbcRDD$$anon$1.<init>(JdbcRDD.scala:82)at org.apache.spark.rdd.JdbcRDD.compute(JdbcRDD.scala:78)at org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:324)at org.apache.spark.rdd.RDD.iterator(RDD.scala:288)at org.apache.spark.rdd.MapPartitionsRDD.compute(MapPartitionsRDD.scala:38)at org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:324)at org.apache.spark.rdd.RDD.iterator(RDD.scala:288)at org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:87)at org.apache.spark.scheduler.Task.run(Task.scala:109)at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:345)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)at java.lang.Thread.run(Thread.java:748)ArrayBuffer()

測試代碼是:

import java.sql.DriverManager import org.apache.spark.rdd.JdbcRDD import org.apache.spark.{SparkConf, SparkContext}object One extends App { val con = new SparkConf().setAppName("rddmysql").setMaster("yarn")val sc = new SparkContext(con)#---------------------下面是spark-shell部分----------------------------//********************************直接從mysql中讀取數據(并且加條件)val getcon=()=>{Class.forName("com.mysql.cj.jdbc.Driver").newInstance()DriverManager.getConnection("jdbc:mysql://Desktop:3306/leaf","appleyuchi","appleyuchi")}val jdbcmysql=new JdbcRDD(sc, //sc程序入口getcon, // 數據庫連接"select * from spark where num >=? and num <=?", //條件查詢語句339233, //最小值3395045, //最大值2, //partition分區ressultSet=>{//返回內容(獲取內容) ressultSet是自己起的別名,可以隨便起 id和age的下標是由它在你數據庫中的位置決定的val id =ressultSet.getInt(1)val age =ressultSet.getInt(2)(id,age) //返回})// ,然后再把age等于18的數據取出val jdbcmysql2 = jdbcmysql.filter(x=>x._2==1935)//再把過濾后的數據保存到mysql中(自己在mysql中創建數據,有id和age)println(jdbcmysql2.collect().toBuffer)//*****************************將數據用RDD直接存到mysql中jdbcmysql2.foreachPartition(x=>{val con = DriverManager.getConnection("jdbc:mysql://Desktop:3306/leaf","appleyuchi","appleyuchi") //建立連接val eq = con.prepareStatement("insert into spark values(?,?)") //添加sql語句。需要提前在mysql中建好結構相同的表x.foreach(t=>{eq.setInt(1,t._1)eq.setInt(2,t._2)eq.executeUpdate()})eq.close()con.close()}) #---------------------上面是spark-shell部分----------------------------sc.stop() }


?

錯誤分析:

明明數據庫是存在的,為什么說unknown,憑我們的功底,sql語法肯定不會出錯,那么問題到底在哪里?

解決方案:

https://gitee.com/appleyuchi/cluster_configuration/blob/master/物理環境配置流程-必須先看.txt

?

總結

以上是生活随笔為你收集整理的spark-shell连接数据库java.sql.SQLSyntaxErrorException: Unknown databas的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。