![](/img/trans.png)
[英]How can access Scala JDBC connection in Python Notebook ---Databricks
[英]JDBC databricks to databricks connection
我希望從不同的數據塊實例連接到一個數據塊實例中的三角洲湖。 我已經從下載頁面下載了 sparksimba jar。 當我使用以下代碼時:
result = spark.read.format("jdbc").option('user', 'token').option('password', <password>).option('query', query).option("url", <url>).option('driver','com.simba.spark.jdbc42.Driver').load()
我收到以下錯誤:
Py4JJavaError: An error occurred while calling o287.load.: java.lang.ClassNotFoundException: com.simba.spark.jdbc42.Driver
從周圍閱讀看來,我需要注冊驅動程序類路徑,但我找不到可行的方法。
我嘗試了以下代碼,但我的 databricks env 中不存在 bin/pyspark 目錄:
%sh bin/pyspark --driver-class-path $/dbfs/driver/simbaspark/simbaspark.jar --jars /dbfs/driver/simbaspark/simbaspark.jar
我也試過:
java -jar /dbfs/driver/simbaspark/simbaspark.jar
但我得到了這個錯誤:沒有主要清單屬性,在 dbfs/driver/simbaspark/simbaspark
如果你想這樣做(真的不推薦),那么你只需要將這個庫上傳到 DBFS,並通過 UI 或 init script將它附加到集群。 之后它將可供驅動程序和執行程序使用。
但實際上,據我所知,您的數據存儲在 DBFS 上的默認位置(所謂的 DBFS 根)。 但是不建議將數據存儲在 DBFS Root 中,文檔中指出了這一點:
寫入安裝點路徑 (
/mnt
) 的數據存儲在 DBFS 根目錄之外。 即使 DBFS 根是可寫的,Databricks 還是建議您將數據存儲在掛載的對象存儲中,而不是存儲在 DBFS 根中。 DBFS 根不適用於生產客戶數據。
所以你需要在現有的存儲帳戶中創建一個單獨的存儲帳戶或容器,並將其掛載到Databricks工作區——這可以對多個工作區進行,這樣你就可以解決多個工作區之間的數據共享問題。 這是在任何雲中部署 Databricks 的標准建議。
這是我使用的示例代碼塊(希望有幫助)
hostURL = "jdbc:mysql://xxxx.mysql.database.azure.com:3306/acme_dbuseSSL=true&requireSL=false"
databaseName = "acme_db"
tableName = "01_dim_customers"
userName = "xxxadmin@xxxmysql"
password = "xxxxxx"
df = (
spark.read
.format("jdbc")
.option("url", f"{hostURL}")
.option("databaseName", f"{databaseName}")
.option("dbTable", f"{tableName}")
.option("user", f"{userName}")
.option("password", f"{password}")
.option("ssl", True)
.load()
)
display(df)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.