允许带Delta表嵌入列名中的空格和特殊字符

升级为Databricks运行时间10.2或后用列映射模式允许列名中的空格和特殊字符

写由shanmugavel.chandrakasu

2022年10月26日

问题

JSON文件常用嵌套柱嵌入列名JSON文件可有名称间空格

使用 Apachespark读写JSON文件时,AnalysisException报错消息

例举,如果想读JSON文件,评价DataFrame后写入DBR102或DBL返回错误

scalavaldf=spark.read.json
          
           dfwrite.format.mode.save
           
            )
           
          

期望报错消息可见栈跟踪

解析例外:属性名Scheple_info.Acccoblits.Count失败值包含无效字符使用别名重命名

因果

DataFrame内嵌入列名之一包含空格,这使您无法写出输出到Delta表

求解

如果源文件直截了当,可使用withColumnRenamed重命名多列并去除空格快速变复杂 嵌套式

带Column可用扁嵌入列重命名现有列(带空格)为新列名(无空格)。万一大图案平整DataFrame内所有嵌套列可谓乏味任务

如果集群使用Databricks运行时间10.2或以上,您可以通过赋能列映射模式完全避免问题列映射模式允许使用空间和!!{}()\n\t=表列名字符

设置Delta表属性delta.columnMapping.mode名称启动列映射模式

样本代码搭建三角洲表,可用空格支持嵌入列名,然而它确实需要集群运行Databricks Runtime10.2或以上

scala导入io.delta.tables.delta表valdf=spark.read.json
          
           DeltaTable.Columns(df.chema).
           
            execute ()df.write.format
            
             )
            
           
          
文章有帮助吗