问题
JSON文件常用嵌套柱嵌入列名JSON文件可有名称间空格
使用 Apachespark读写JSON文件时,AnalysisException报错消息
例举,如果想读JSON文件,评价DataFrame后写入DBR102或DBL返回错误
scalavaldf=spark.read.jsondfwrite.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.jsonDeltaTable.Columns(df.chema). execute ()df.write.format )