将数据从Azure Synapse中的ApacheSpark写入SQL DW [英] Write Data to SQL DW from Apache Spark in Azure Synapse

查看:0
本文介绍了将数据从Azure Synapse中的ApacheSpark写入SQL DW的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当我从数据库向Azure中的SQL DW写入数据时,我使用以下代码:

example1.write.format("com.databricks.spark.sqldw").option("url", sqlDwUrlSmall).option("dbtable", "SampleTable12").option("forward_spark_azure_storage_credentials","True") .option("tempdir", tempDir).mode("overwrite").save()

这不适用于Synapse Notebook中的Notebook。我收到错误:

Py4JJavaError: An error occurred while calling o174.save.
: java.lang.ClassNotFoundException: Failed to find data source: com.databricks.spark.sqldw. Please find packages at http://spark.apache.org/third-party-projects.html
    at org.apache.spark.sql.execution.datasources.DataSource$.lookupDataSource(DataSource.scala:656) Caused by: java.lang.ClassNotFoundException: com.databricks.spark.sqldw.DefaultSource

基本上,我需要知道Azure Synapse中的ApacheSpark的com.databricks.spark.sqldw等效项。

谢谢

推荐答案

如果您要在与笔记本相同的Synapse工作区中写入专用SQL池,则只需调用synapsesql方法即可。在Scala中使用Synapse笔记本的参数单元格功能的一个简单的参数化示例。

// Read the table
val df = spark.read.synapsesql(s"${pDatabaseName}.${pSchemaName}.${pTableName}")

// do some processing ...

// Write it back with _processed suffixed to the table name
df.write.synapsesql(s"${pDatabaseName}.${pSchemaName}.${pTableName}_processed", Constants.INTERNAL)

如果您尝试从笔记本写入不同的专用SQL池或旧的Azure SQL数据仓库,则会有所不同,但有一些很好的示例here

更新:带美元符号的花括号中的项(例如${pDatabaseName})是参数。您可以在笔记本中指定一个参数单元格,这样就可以使用Execute Notebook活动从外部传递参数,例如从Azure数据工厂(ADF)或Synapse管道,并在笔记本中重复使用,如我上面的例子所示。了解有关Synapse笔记本参数的更多信息here

这篇关于将数据从Azure Synapse中的ApacheSpark写入SQL DW的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆