Azure中通过Python写入Delta Lake时遇模式错误
问题解决:Delta Lake写入时的schema_mode错误
错误原因
你把追加写入的模式append传给了schema_mode参数,但这个参数是用来控制Delta表的schema演化规则的,只支持overwrite(覆盖原有schema)和merge(合并新老schema)两种选项。而你要实现的追加数据到表中的操作,应该用专门的mode参数来指定。
修正后的代码
def write_delta(df, tableName, writemode): uri = f'az://bronze/delta/delta-operations/{tableName}' write_deltalake( uri, df, mode= writemode, # 改用mode参数指定数据写入模式 schema_mode= "merge", # 根据实际需求选overwrite或merge,默认常用merge storage_options= storage_options ) return
参数说明
mode:控制数据写入的模式,支持append(追加)、overwrite(覆盖全表)、ignore(表存在则跳过)、error(表存在则报错),这才是用来指定追加逻辑的参数。schema_mode:仅处理新老schema不一致的场景,决定是覆盖原有schema还是合并新字段,和数据写入模式是完全分开的配置项。
内容的提问来源于stack exchange,提问作者AppNove
相关产品推荐
相关产品推荐

