pyspark - DELTA TABLES - 指定的属性与现有属性不匹配
问题描述
我在 DataBricks Delta Tables 上使用一组用户属性进行元数据管理。问题是当我需要更改其中一个属性时,我收到“失败错误:指定的属性与 /mnt/silver/... 中的现有属性不匹配”错误消息。
Databricks 文档仅声明将引发异常,并且我没有找到任何参数来强制它接受新值。
是否可以只更新表属性?
有什么建议么?
示例代码:
query = f'''
CREATE TABLE if not exists {tableMetadataDBName}.{tableMetadataTableName}
(
... my columns ...
-- COMMON COLUMNS
,Hash string
,sourceFilename STRING
,HashWithFileDate string
,Surrogate_Key STRING
,SessionId STRING
,SessionRunDate TIMESTAMP
,Year INT GENERATED ALWAYS AS ( YEAR(fileDate))
,Month INT GENERATED ALWAYS AS ( MONTH(fileDate))
,fileDate DATE
)
USING DELTA
COMMENT '{tableDocumentationURL}'
LOCATION "{savePath}/parquet"
OPTIONS( "compression"="snappy")
PARTITIONED BY (Year, Month, fileDate )
TBLPROPERTIES ("DataStage"="{txtDataStage.upper()}"
,"Environment"="{txtEnvironment}"
,"source"="{tableMetadataSource}"
,"CreationDate" = "{tableMetadataCreationDate}"
,"CreatedBy" = "{tableMetadataCreatedBy}"
,"Project" = "{tableMetadataProject}"
,"AssociatedReports" = "{tableMetadataAssociatedReports}"
,"UpstreamDependencies" = "{tableMetadataUpstreamDependencies}"
,"DownstreamDependencies" = "{tableMetadataDownstreamDependencies}"
,"Source" = "{tableMetadataSource}"
,"PopulationFrequency" = "{tableMetadataPopulationFrequency}"
,"BusinessSubject" = "{tableMetadataBusinessSubject}"
,"JiraProject" = "{tableMetadataJiraProject}"
,"DevOpsProject" = "{tableMetadataDevOpsProject}"
,"DevOpsRepository" = "{tableMetadataDevOpsRepository}"
,"URL" = "{tableMetadataURL}") '''
spark.sql(query)
解决方案
是的,可以只更改属性 - 您需要为此使用“ ALTER TABLE [table_name] SET TBLPROPERTIES ... ”:
query = f"""ALTER TABLE {table_name} SET TBLPROPERTIES (
'CreatedBy' = '{tableMetadataCreatedBy}
,'Project' = '{tableMetadataProject}'
....
)"""
spark.sql(query)
推荐阅读
- post - 解决从 Arduino MKR1010 发布到 IFTTT 的 webhook 的问题
- ios - Xcode - 动态添加 3rd 方框架
- c# - 在没有 .net 框架的情况下运行 winform 应用程序
- python - 致命的python错误:打开python到.exe转换文件时的init_fs_coding
- javascript - 如何获取带有等待的非阻塞函数的返回值
- html - 在我的网页上上传视频的代码
- node.js - 使用 puppeteer 从 facebook 登录到 oauth 对话框
- linux - Linux下grep与IF合并的问题
- python - 如何使用 rpy2 访问 R 包的内部函数?
- python - Discord.py - 在不阻止其他命令运行的情况下发送图像