你好,
我想寫一個三角洲表在我的磚從遠程火花會話實例在不同的集群與辛巴火花司機。我可以讀,但是當我試圖做一個寫,我得到以下錯誤:
{
df.write.format (jdbc) .mode SaveMode.Append .options(地圖(
" url " - > " jdbc:火花:/ /亞行- < host_id > .azuredatabricks.net: 443 /違約;運輸方式= http; ssl = 1; httpPath = < http_path >; AuthMech = 3; UID =令牌;PWD = <標記> ",
“數據表”- >“testtable”,
“驅動程序”- >“com.simba.spark.jdbc.Driver”
).save ()
}
java.sql。SQLFeatureNotSupportedException: [Simba][JDBC](10220) Driver does not support this optional feature.
在com.simba.spark.exceptions.ExceptionConverter。toSQLException(未知來源)
com.simba.spark.jdbc.common.SPreparedStatement.checkTypeSupported(未知源)
com.simba.spark.jdbc.common.SPreparedStatement.setNull(未知源)
org.apache.spark.sql.execution.datasources.jdbc.JdbcUtils .savePartition美元(JdbcUtils.scala: 677)
在org.apache.spark.sql.execution.datasources.jdbc.JdbcUtils。美元anonfun saveTable 1美元(JdbcUtils.scala: 856)
org.apache.spark.sql.execution.datasources.jdbc.JdbcUtils。美元anonfun saveTable美元$ 1 $改編(JdbcUtils.scala: 854)
在org.apache.spark.rdd.RDD。anonfun foreachPartition美元2美元(RDD.scala: 1020)
……
我目前使用“數據科學與工程”部分的集群連接,在先進的部分有細節通過JDBC / ODBC連接。一些指南表明使用SQL端點,這可能是我的問題,但我沒有權限來創建一個。一些帖子,比如StackOverflow,表明這是一個問題的自動提交功能,不支持的辛巴火花司機,但我不確定,我找不到一個火花或驅動程序選項,顯示關閉這個。
此外,所有的文檔做的火花。似乎寫操作時的一個筆記本磚服務器實例和遠程連接使用驅動程序示例。我丟失的文檔頁麵將在哪裏?
遠程火花實例
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
火花版本:3.1.1
Scala版本:2.1210
辛巴從磚JDBC驅動程序:火花2.6.22
磚集群的設置
- - - - - - - - - - - - - - - - - - - - - - - -
Azure雲係統:
政策:不受限製的
集群模式:標準
自動定量:啟用
磚運行時版本:9.1 LTS(包括Apache 3.1.2, Scala 2.12)
工人和司機類型:Standard_DS3_v2
請讓我知道如果你需要任何其他信息來幫助我解決我的問題。
謝謝你!
凱
我不清楚如何設置自動提交/錯誤。這是我應該做我的火花配置設置,當我啟動它的殼/提交嗎?還是有一些標準JDBC配置文件被引用的地方這些設置被關閉?我問,因為我唯一看到關閉自動提交相關文檔與java.sql直接。連接類,但是我想寫使用df.write.format (jdbc)。選項(地圖(…)).save(),它將拋出一個錯誤如果您試圖設置一個自動提交選項。我還沒有看到一個autocommit-related選項在辛巴JBDC文檔可用驅動程序的列表選項,可以通過設置選項(地圖(…))調用。我不能用一個連接對象,隻有通過直接SQL命令不會寫出DataFrame;我可以循環注入插入,但太笨重和緩慢。
我用火花3.1.2(3.1.1首次發布上市,部署最初上市3.1.1)初始化:spark-shell spark-shell—target: jvm - 1.8
我將在接下來的包(目前一些使用和未使用的):
——設計“spark.driver.extraClassPath = ~ /罐/ SparkJDBC42。jar " \
——spark.jars相依”。存儲庫=路徑/ \ /回購”
——包”com.microsoft.sqlserver: mssql-jdbc: 6.4.0.jre8 net.sourceforge.jtds: jtds: 1.3.1, com.oracle.database.jdbc: ojdbc8:21.1.0.0, com.databricks: spark-avro_2.10:4.0.0”
以下是消除識別信息設置,隱式地從/ opt / / conf / spark-default.conf火花:
spark.master = k8: / / https://kubernetes.default.svc.cluster.local: 443
spark.app.name = sp-worker
spark.eventLog。使真正的
spark.eventLog。dir文件:/ / /火花/日誌
spark.kubernetes.driver.limit.cores = 2
spark.kubernetes.executor.limit.cores = 4
spark.executor.instances = 2
spark.executor.memory = 4 g
spark.kubernetes.executor.limit.cores = 4
spark.kubernetes.executor.request.cores = 250
spark.kubernetes.driver.label.app = spark-jlab
spark.kubernetes.executor.label.app = spark-jlab
spark.kubernetes.executor.label.deployment = jlab
spark.kubernetes.local.dirs.tmpfs = true
spark.kubernetes.container.image.pullPolicy = IfNotPresent
spark.kubernetes.container.image =docker.someurl.com/path/to/image/repo
#回家Python庫
spark.kubernetes.driver.volumes.persistentVolumeClaim.home.mount.path = /家庭
spark.kubernetes.driver.volumes.persistentVolumeClaim.home.mount.readOnly = false
spark.kubernetes.driver.volumes.persistentVolumeClaim.home.options.claimName = jlab
spark.kubernetes.executor.volumes.persistentVolumeClaim.home.mount.path = /家庭
spark.kubernetes.executor.volumes.persistentVolumeClaim.home.mount.readOnly = false
spark.kubernetes.executor.volumes.persistentVolumeClaim.home.options.claimName = jlab
# #日誌
spark.kubernetes.driver.volumes.persistentVolumeClaim.logs.mount.path = /日誌
spark.kubernetes.driver.volumes.persistentVolumeClaim.logs.mount.readOnly = false
spark.kubernetes.driver.volumes.persistentVolumeClaim.logs.options.claimName = k8s-sparkhistorylogs
spark.kubernetes.executor.volumes.persistentVolumeClaim.logs.mount.path = /日誌
spark.kubernetes.executor.volumes.persistentVolumeClaim.logs.mount.readOnly = false
spark.kubernetes.executor.volumes.persistentVolumeClaim.logs.options.claimName = k8s-sparkhistorylogs
spark.kubernetes.namespace =名稱空間- 00000
spark.kubernetes.authenticate.driver.serviceAccountName = svcactnm - 00000
spark.kubernetes.authenticate.oauthToken =令牌
spark.kubernetes.authenticate.caCertFile = / opt / osficerts / ctc.crt
spark.ui.xContentTypeOptions.enabled = true
spark.kubernetes.pyspark.pythonVersion = 3