hive中create table as select建表,在哪加 TBLPROPERTIES (‘hive.mapreduce.job.mode’=‘nonstrict’)
时间: 2024-10-09 17:15:13 浏览: 50
在Hive中,`CREATE TABLE AS SELECT`语句用于从已有的查询结果创建一个新的表。如果你想要指定TBLPROPERTIES(元数据属性),如设置`hive.mapreduce.job.mode`为非严格模式(`'nonstrict'`),你应该在创建新表的时候直接添加这些属性,语法如下:
```sql
CREATE TABLE [IF NOT EXISTS] new_table_name
AS
SELECT * FROM source_table
TBLPROPERTIES ('hive.mapreduce.job.mode' = 'nonstrict');
```
这里的`new_table_name`是你想给新表起的名字,`source_table`是你要从中选取数据的原始表名。注意,将`'nonstrict'`替换为你需要的实际属性值。
如果你希望所有新的分区或者表都采用这个配置,可以在数据库级别或者会话级别的`set`命令中设置这个属性,然后运行`CREATE TABLE AS SELECT`。但是,对于单次的`CREATE TABLE AS SELECT`操作来说,上述直接在`TBLPROPERTIES`部分设置更为常见。
相关问题
create table 暗杀、TBLPROPERTIES ('hive.mapreduce.job.mode'='nonstrict');
在Hive SQL中,`CREATE TABLE`语句用于创建新的数据表,而`TBLPROPERTIES`是在这个语句中添加元数据属性的一部分。当你在创建表时使用`TBLPROPERTIES`,如`('hive.mapreduce.job.mode'='nonstrict')`,这设置了表的一个特定属性`hive.mapreduce.job.mode`,其中:
- `'hive.mapreduce.job.mode'='nonstrict'`表示非严格的模式,通常在处理大数据集或者并行任务时使用。在这个模式下,如果某个map或reduce任务失败,Job不会立即终止,而是会尝试继续处理其他任务。非严格模式有助于提高整体任务完成的可能性,但可能导致最终结果不完全准确。
完整的例子可能是这样的:
```sql
CREATE TABLE IF NOT EXISTS暗杀
(
字段1 string,
字段2 int,
...
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE
TBLPROPERTIES ('hive.mapreduce.job.mode'='nonstrict');
```
set hive.exec.dynamic.partition.mode=nonstrict; set mapreduce.map.memory.mb=8192; set mapreduce.reduce.memory.mb=8192; set hive.optimize.skewjoin = true; set mapreduce.map.java.opts=-Xmx1536m; set mapreduce.reduce.java.opts=-Xmx3072m; set mapred.reduce.tasks = 200 ; set hive.exec.dynamic.partition=true; set hive.exec.dynamic.partition.mode=nostrick; set hive.exec.max.dynamic.partitions.pernode=100000;--设置动态分区个数 set hive.exec.max.dynamic.partitions=100000; set hive.exec.max.created.files=100000; --插入缺失的历史数据 insert into dw_oneapp.t_oneapp_buried_point partition(parnum) select t.* from dw_oneapp.t_oneapp_buried_point_his_tmp t left join dw_oneapp.t_oneapp_buried_point p on t.equip_id=p.equip_id where p.equip_id is null; insert overwrite table dw_oneapp.t_oneapp_buried_point partition(parnum) select t.* from dw_oneapp.t_oneapp_buried_point_tmp t where parnum like '20%';
这段代码是一个 Hive SQL 脚本,它包含了一系列的配置和两个插入语句。这些配置用于设置 Hive 的运行参数和优化选项,而插入语句用于将数据插入到 `dw_oneapp.t_oneapp_buried_point` 表的动态分区中。
在这个脚本中,首先设置了一些 Hive 的配置参数,如 `hive.exec.dynamic.partition.mode`、`mapreduce.map.memory.mb`、`hive.optimize.skewjoin` 等。这些参数可以根据你的需求进行调整,以优化 Hive 的执行性能和内存使用情况。
接下来,第一个插入语句使用了一个左连接操作,通过 `equip_id` 列将 `dw_oneapp.t_oneapp_buried_point_his_tmp` 表和 `dw_oneapp.t_oneapp_buried_point` 表进行连接,筛选出在 `dw_oneapp.t_oneapp_buried_point` 表中不存在的记录,并将其插入到 `dw_oneapp.t_oneapp_buried_point` 表的动态分区中。
第二个插入语句使用了一个覆写插入操作 (`insert overwrite`),从 `dw_oneapp.t_oneapp_buried_point_tmp` 表中选择符合条件的数据,并将其覆盖写入到 `dw_oneapp.t_oneapp_buried_point` 表的动态分区中。
请注意,这些代码片段可能需要根据你的具体环境和数据模型进行适当的调整和修改。同时,还需要确保表结构和分区定义的一致性,以及分区列的正确设置。
阅读全文