我有一段pyspark代码将数据帧转换为物理表:
df.write.mode('overwrite).saveAsTable('sometablename')
如果数据框df包含名称中包含空格的列,则会失败,并显示以下错误:
18/03/08 10:33:29 ERROR CreateDataSourceTableAsSelectCommand: Failed to write to table pivot_up_spaces_Export_Data_4
org.apache.spark.sql.AnalysisException: Attribute name "SUM_count_col umn" contains invalid character(s) among " ,;{}()\n\t=". Please use alias to rename it.;
at org.apache.spark.sql.execution.datasources.parquet.ParquetSchemaConverter$.checkConversionRequirement(ParquetSchemaConverter.scala:581)
at org.apache.spark.sql.execution.datasources.parquet.ParquetSchemaConverter$.checkFieldName(ParquetSchemaConverter.scala:567)
当我在同一个表上使用registerTempTable时,一切正常:
df.registerTempTable('sometablename')
但是,我在spark-sql中,我能够创建在列名中有空格的表。我有什么方法可以解决pyspark中的这种情况吗?
我在EMR 5.10.0集群上运行它,内部使用Spark 2.2.0。