有一个dws.dws_ty_charge_vehicle_class表,它的建表语句是CREATE TABLE dws.dws_ty_charge_vehicle_class( ty_id string COMMENT '统计表主键', map_id string COMMENT '地图ID', ty_date string COMMENT '统计时间(日)' PARTITIONED BY ( dt_class string, mapid string) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe' STORED AS INPUTFORMAT 'org.apache.hadoop.mapred.TextInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat',表2的建表语句为CREATE TABLE tmp.public_day( ty_id string COMMENT '统计表主键', map_id string COMMENT '地图ID', ty_date string COMMENT '统计时间(日)' ) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe' STORED AS INPUTFORMAT 'org.apache.hadoop.mapred.TextInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'hive 。动态插入分区时 insert overwrite table dws.dws_ty_charge_vehicle_class partition(dt_class,mapid) select ty_id, ty_date, map_id from tmp.fromtpart 会报一个ValidationFailureSemanticException Partition spec {map_id=null, dt_class=null} contains non-partition columns的错误
时间: 2023-11-27 09:49:50 浏览: 86
MT6735的GPIO配置工具DrvGen.rar
这个错误是因为你在插入数据时没有指定分区列的值。你需要在INSERT语句中指定分区列的值,例如:
```
INSERT OVERWRITE TABLE dws.dws_ty_charge_vehicle_class PARTITION(dt_class='2022-01-01', mapid='1') SELECT ty_id, ty_date, map_id FROM tmp.public_day;
```
其中,`dt_class`和`mapid`是分区列,需要指定具体的值。在你的错误信息中,`{map_id=null, dt_class=null}`说明你没有指定分区列的值,导致出现了错误。
阅读全文