我正在pyspark開發一個spark-flask應用程序。我使用pyspark 2.20這裏是我的代碼如何解決java.sql.SQLException:無法打開測試連接到給定的數據庫。pyspark 2.2
import re
from tkinter import*
import json
from pyspark.sql import HiveContext
#from pyspark.sql import SparkSession
from flask import Flask
from pyspark import SparkConf,SparkContext
conf=SparkConf().setMaster('local').setAppName("TestValue")
conf.set("spark.driver.allowMultipleContexts", "true")
sc=SparkContext(conf=conf)
sqlContext=HiveContext(sc)
#from pyspark.sql import Row
app=Flask(__name__)
#spark=SparkSession.builder.config("spark.sql.warehouse.dir", "C:\spark\spark-warehouse").appName("TestApp").enableHiveSupport().getOrCreate()
print("Success")
#sqlstring="SELECT lflow1.LeaseType as LeaseType, lflow1.Status as Status, lflow1.Property as property, lflow1.City as City, lesflow2.DealType as DealType, lesflow2.Area as Area, lflow1.Did as DID, lesflow2.MID as MID from lflow1, lesflow2 WHERE lflow1.Did = lesflow2.MID"
@app.route('/<sqlval>')
def queryBuilder(sqlval):
df=sqlContext.sql(sqlval)
#df.show()
resultlist = df.toJSON().collect()
dumpdata = re.sub(r"\'", "", str(resultlist))
jsondata = json.dumps(dumpdata)
#print(jsondata)
return jsondata
#return df
#queryBuilder(sqlstring)
if __name__ == '__main__':
app.run(debug = True)
master=Tk()
entryval=Entry(master)
entryval.grid(row=0,column=1)
Button(master,text='Quit',command=master.quit).grid(row=3,column=1,sticky=W,pady=50)
mainloop()
在這裏,我已經編寫sqlCOntext風格,而不是sparksession.builder。預期此代碼將根據請求返回json數據響應。並且現在我正在獲取波紋管錯誤
java.sql.SQLException:無法打開到給定數據庫的測試連接。 JDBC url = jdbc:derby:; databaseName = metastore_db; create = true,username = APP。終止連接池(如果您希望在應用程序後啓動數據庫,請將lazyInit設置爲true)
這是堆棧跟蹤中嵌套的最後一個異常。原始異常爲 java.sql.SQLException:無法使用類加載器[email protected]f1b8e6啓動數據庫'metastore_db',請參閱 下一個異常詳細信息
引起:錯誤XSDB6:另一個Derby實例可能已經引導了數據庫C:\ spark \ metastore_db。
我已經從metastore_db文件夾刪除了db.lck文件,但沒有任何更改。我之前使用過這個技巧來解決最後兩個異常。但沒有面對
java.sql.SQLException:無法打開到給定數據庫的測試連接。 JDBC url = jdbc:derby:; databaseName = metastore_db; create = true,username = APP。終止連接池(如果您希望在您的應用程序後啓動數據庫,請將lazyInit設置爲true)
到目前爲止,我已經發現它是Spark 2.0.1中的一個錯誤,2.0.2並且它被固定爲2.1與2.2版本 https://issues.apache.org/jira/browse/SPARK-18687
,我在Windows 10
這裏使用pyspark 2.2版本現在是星火會議風格的代碼
from tkinter import*
from pyspark.sql import SparkSession
from flask import Flask
import json
import re
app=Flask(__name__)
spark=SparkSession.builder.config("spark.sql.warehouse.dir", "C:\spark\spark-warehouse")\
.config("spark.driver.allowMultipleContexts","true")\
.appName("TestApp").\
enableHiveSupport().getOrCreate()
#spark.conf.set("spark.driver.allowMultipleContexts","true")
#spark=SparkSession.builder.config("spark.driver.allowMultipleContexts", "true").appName("TestApp").enableHiveSupport().getOrCreate()
print("Success")
#sqlstring="SELECT lflow1.LeaseType as LeaseType, lflow1.Status as Status, lflow1.Property as property, lflow1.City as City, lesflow2.DealType as DealType, lesflow2.Area as Area, lflow1.Did as DID, lesflow2.MID as MID from lflow1, lesflow2 WHERE lflow1.Did = lesflow2.MID"
@app.route('/<sqlval>')
def queryBuilder(sqlval):
df=spark.sql(sqlval)
#df.show()
resultlist = df.toJSON().collect()
dumpdata = re.sub(r"\'", "", str(resultlist))
jsondata = json.dumps(dumpdata)
#print(jsondata)
return jsondata
#return df
#queryBuilder(sqlstring)
if __name__ == '__main__':
app.run(debug = True)
master=Tk()
entryval=Entry(master)
entryval.grid(row=0,column=1)
Button(master,text='Quit',command=master.quit).grid(row=3,column=1,sticky=W,pady=50)
mainloop()
堆棧跟蹤圖像
我確實刪除了它。大聲笑這是老招。但現在沒有變化:D – Kalyan