有一个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 08:49:50 浏览: 40
这个错误是因为你在插入数据时没有指定分区列的值。你需要在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}`说明你没有指定分区列的值,导致出现了错误。
相关问题
改正这个代码 ALTER TABLE dws.dws_ivct_stock_health_dep_site_di rename site_id site STRING
请注意,ALTER TABLE 语句的语法可以根据使用的数据库管理系统而有所不同。基于常见的 SQL 语法,你可以尝试以下修改:
```sql
ALTER TABLE dws.dws_ivct_stock_health_dep_site_di
CHANGE COLUMN site_id site VARCHAR(255);
```
这将修改 dws.dws_ivct_stock_health_dep_site_di 表中的 site_id 列的名称为 site,并将其数据类型更改为 VARCHAR(255)。请根据你使用的数据库管理系统和具体需求进行调整。
注意:在进行任何表结构修改之前,请务必备份你的数据,并确保在生产环境中谨慎操作。
9000. DB::Exception: wesure_dev_rw: Not enough privileges. To execute this query it's necessary to have grant ALTER ADD COLUMN(if_renewal) ON dws.t_dws_abtest_cube_di_local. (ACCESS_DENIED)
这个错误提示表明你执行的查询需要对dws.t_dws_abtest_cube_di_local表授予ALTER ADD COLUMN(if_renewal)的权限,但是当前用户没有该权限。因此,你需要使用具有相应权限的用户执行该查询,或者请求管理员给你的当前用户授予该权限。
你可以使用以下命令授予ALTER ADD COLUMN(if_renewal)权限:
```
GRANT ALTER ADD COLUMN(if_renewal) ON dws.t_dws_abtest_cube_di_local TO <username>;
```
其中,<username>是你要授予权限的用户。
如果你不确定如何授予权限,建议咨询你们的数据库管理员进行操作。