我正在尝试使用以下代码将数据写入带有标识字段的Azure Synapse表:
数据砖上的代码
def get_jdbc_connection(host, sqlDatabase, user, password):
jdbcHostname = "{}.database.windows.net".format(host)
jdbc_url = "jdbc:sqlserver://{}:1433;database={};user={}@{};password={};encrypt=true;trustServerCertificate=false;hostNameInCertificate=*.database.windows.net;loginTimeout=30;".format(jdbcHostname, sqlDatabase, user, host, password)
url = "jdbc:sqlserver://{}:1433;database={};encrypt=true;trustServerCertificate=false;hostNameInCertificate=*.database.windows.net;loginTimeout=30;".format(jdbcHostname, sqlDatabase)
return (jdbc_url,url )
def write_adw(spark, df_target_adw, jdbc_url, table, tempDir, option_mode, pre_Actions ):
df_target_adw.write.format("com.databricks.spark.sqldw") \
.option("url", jdbc_url) \
.option("useAzureMSI", "true") \
.option("preActions", pre_Actions) \
.option("dbTable", table) \
.option("tempDir", tempDir) \
.mode(option_mode) \
.save()
dftraffic = spark.sql('SELECT distinct SourceName\
,1 AS IsActiveRow \
,"Pipe-123" as pipelineId \
,current_timestamp as ADFCreatedDateTime \
,current_timestamp as ADFModifiedDateTime \
from deltaTable')
#write to ADW
(jdbc_url, url_adw) = get_jdbc_connection(host, sqlDatawarehouse,user, password)
target_table = 'TargetTable_name'
option_mode= "append"
pre_Actions= " SELECT GETDATE()"
write_adw(spark, dftraffic, jdbc_url, target_table, tempDir, option_mode, pre_Actions )
adw上目标表的架构
数据块的配置详细信息
数据库运行时7.4(包括Apache Spark 3.0.1、Scala 2.12)
错误消息
Py4JJavaError:调用o457.save.时出错:com.databricks.spark.sqldw.SqlDWSideException:Azure Synapse Analytics无法执行连接器生成的JDBC查询。基础SQLException(s):-com.microsoft.sqlserver.jdbc.SQLServerException:只有在使用列列表并且IDENTITY_INSERT为ON时,才能指定表中标识列的显式值
代码在databricks运行时6.4 Spark 2.4.5上工作正常,当我尝试升级dbk运行时时,我就会遇到这个错误。我怎样才能让它工作?
您没有额外的行“1 AS IsActiveRow”吗?我在Schema中没有看到这一点
dftraffic = spark.sql('SELECT distinct SourceName\
,1 AS IsActiveRow \
,"Pipe-123" as pipelineId \
,current_timestamp as ADFCreatedDateTime \
,current_timestamp as ADFModifiedDateTime \
from deltaTable)
我试图在Azure DataBricks中安装,但尝试安装它会产生错误,并且不会安装。 这是我试图安装它的群集配置: 还可以尝试安装以下内容,,但是安装永远不会完成。 这是安装在数据库笔记本上的错误 谢谢你的帮助
我在VPS上使用这个脚本已经很多年了。它还在工作。 现在我要转到另一个主机。我正在尝试使用相同的脚本(当然,我用新凭据更改了ROOT_密码),但我不知道为什么会出现这种情况:
根据data bricks docs-https://docs . data bricks . com/data/data-sources/azure/cosmos db-connector . html,我已经下载了最新的azure-cosmosdb-spark库(azure-cosmos db-spark _ 2 . 4 . 0 _ 2.11-2 . 1 . 2-Uber . jar)并放在d
我正在编程一个简单的Java gmail客户端来完成我的a级项目。当下面的代码段运行时,我总是得到一个错误。我找不出为什么会有错误。 错误是: Java.io.NotSerializableException:用户在Java.io.ObjectOutputStream.WriteObject0(ObjectOutputStream.Java:1184)在Java.io.ObjectOutputSt
使用“file_loads”技术通过Apache Beam数据流作业写入BigQuery时出错。流式插入(else块)工作正常,符合预期。file_load(如果块)失败,错误在代码后面给出。bucket中GCS上的临时文件是有效的JSON对象。 来自pub/sub的原始事件示例: 数据流作业出错:
我们刚刚在资源组中创建了一个新的 Azure 数据砖资源。在同一资源组中,有一个 Azure 数据砖的旧实例。从这个旧的数据砖实例开始,我将数据存储在dbfs中的数据复制到最新的数据砖实例中。我该怎么做?我的想法是使用FS命令将数据从一个dbfs复制或移动到另一个数据库,可能是装入卷,但我不明白我该怎么做。你有什么迹象吗? 谢谢,弗朗西斯科