如何转换 databricks 工作区 1 (DBW1) 中的数据,然后将其推送(发送/保存表)到另一个 databricks 工作区 (DBW2)?
在我安装的 DBW1 上 this JDBC 驱动程序。
然后我尝试了:
(df.write
.format("jdbc")
.options(
url="jdbc:spark://<DBW2-url>:443/default;transportMode=http;ssl=1;httpPath=<http-path-of-cluster>;AuthMech=3;UID=<uid>;PWD=<pat>",
driver="com.simba.spark.jdbc.Driver",
dbtable="default.fromDBW1"
)
.save()
)
但是,当我运行它时,我得到:
java.sql.SQLException: [Simba][SparkJDBCDriver](500051) ERROR processing query/statement. Error Code: 0, SQL state: org.apache.hive.service.cli.HiveSQLException: Error running query: org.apache.spark.sql.catalyst.parser.ParseException:
如何正确执行此操作?
注意:每个 DBW 都位于不同的订阅中。
最佳答案
从我的角度来看,更具可扩展性的方法是直接写入 ADLS,而不是使用 JDBC。但这需要按如下方式完成:
您需要有一个单独的存储帐户来存储您的数据。无论如何,使用 DBFS Root 来存储实际数据 isn't recommended因为它无法从外部访问 - 这使得迁移等事情变得更加复杂。
您需要有一种方法来访问该存储帐户( ADLS 或 Blob storage )。您可以直接使用访问数据(通过
abfss://
或wasbs://
URL)在目标工作区中,您只需为写入的数据创建一个表 - 所谓的 unmanaged table 。就这样做(参见doc):
create table <name>
using delta
location 'path_or_url_to data'
关于azure - Databricks - 将数据从一个databricks工作区传输到另一个databricks工作区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70742186/