Apache spark Spark向配置单元写入错误的表“U名称为分区规范并抛出”;分区规范包含非分区列“;错误
我的配置单元表定义为按(ds字符串、模型字符串)分区的Apache spark Spark向配置单元写入错误的表“U名称为分区规范并抛出”;分区规范包含非分区列“;错误,apache-spark,hadoop,amazon-s3,hive,Apache Spark,Hadoop,Amazon S3,Hive,我的配置单元表定义为按(ds字符串、模型字符串)分区的 当我在Pypark给桌子写信时,我做到了 output_df .repartition(250) .write .mode('overwrite') .format('parquet')\ .partitionBy('ds', 'model')\ .saveAsTable('{table_schema}.{table_name}'.format(table_schema=table_schema, table_
当我在Pypark给桌子写信时,我做到了
output_df
.repartition(250)
.write
.mode('overwrite')
.format('parquet')\
.partitionBy('ds', 'model')\
.saveAsTable('{table_schema}.{table_name}'.format(table_schema=table_schema,
table_name=table_name))
但是,我遇到了以下错误:
org.apache.hadoop.hive.ql.metadata.Table.ValidationFailureSemanticException: Partition spec {ds=2019-10-06, model=p1kr, table_name=drv_projection_table} contains non-partition columns
似乎Spark或Hive将表名误认为是分区。我的表的S3路径是
S3://some\u path/qubole/table\u name=drv\u projection\u table
,但是table\u name
没有指定为分区的一部分 当您在saveAsTable
中使用table\u name
时,它是什么?它是drv\u projection\u table
,与错误消息被视为分区键的值相同。如果您不希望Hive将其解释为分区规范,则整个表\u name=drv\u projection\u table
应该是表的名称。我不确定您是如何创建它的(其中=
是一个特殊字符),看。@dayup你解决问题了吗?我也面临同样的问题。当您在saveAsTable
中使用table\u name
时,它是什么?它是drv\u projection\u table
,与错误消息被视为分区键的值相同。如果您不希望Hive将其解释为分区规范,则整个表\u name=drv\u projection\u table
应该是表的名称。我不确定您是如何创建它的(其中=
是一个特殊字符),看。@dayup你解决问题了吗?我也面临同样的问题。