azure - Databricks - 将数据从一个databricks工作区传输到另一个databricks工作区

标签 azure databricks azure-databricks

如何转换 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因为它无法从外部访问 - 这使得迁移等事情变得更加复杂。

  • 您需要有一种方法来访问该存储帐户( ADLSBlob 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/

相关文章:

azure - 使用arm从key Vault导入apns certyfikace

azure - 将 ASP.NET Core JavaScript 服务部署到 Azure 故障节点

azure - 部署在 Azure Service Fabric 上的项目中的终结点名称

apache-spark - 如何从 Databricks Notebook 中调用 Cluster API 并启动集群?

python-3.x - 在Databricks(DBFS)中递归列出目录和子目录的文件

azure-data-lake - 从数据 block 连接到数据湖(ADLS Gen2)存储时出错

r - 在 azure ML 中创建自定义模块时加载 CRAN3.1 不支持的 R 包

scala - 如何从映射中按原样检索派生类?

pandas - 将 Pandas 或 Pyspark 数据帧从 Databricks 保存到 Azure Blob 存储

azure - 如何强制刷新用于挂载 ADLS Gen2 的 key ? Azure Databricks 使用 Azure KeyVault 支持的范围安装 - SP secret 更新