Hive 视图 索引 动态分区装载数据

视图

创建视图
create view v_emp AS select t.name, t.age, t.addr from t_emp;

删除视图
drop view if exists v_emp;


索引

创建索引
create index t_emp_index
    on table t_emp (name)
    as ‘org.apache.hadoop.hive.ql.index.compact.CompactIndexHandler’
    with deferred rebuild in table t_index;

显示索引
查看索引

重建索引
alter index t_emp_index on t_emp rebuild;

删除索引
drop index if exists t_emp_index on t_emp ;


普通装载数据(分区需指定)

  • 从文件中装载数据

    hive>LOAD DATA [LOCAL] INPATH ‘…’ [OVERWRITE] INTO TABLE t_employee [PARTITION (…)];

  • 通过查询表装载数据

    hive>INSERT OVERWRITE TABLE t_emp PARTITION (…) SELECT * FROM xxx WHERE xxx

  • 批量插入

    hive>FROM t_emp
                INSERT OVERWRITE TABLE t_test PARTITION (…) SELECT … WHERE …
                INSERT OVERWRITE TABLE t_test PARTITION (…) SELECT … WHERE …
                INSERT OVERWRITE TABLE t_test PARTITION (…) SELECT … WHERE …

    batch_insert
    shows


动态分区装载数据(分区不需指定)

  • 若没有开启动态分区只支持以下写法

    hive>INSERT OVERWRITE TABLE t_test PARTITION (country=’china’, city=’chengDu’)
                  SELECT name, age, addr
                   FROM t_emp
                 WHERE t_emp.country = ‘china’
                     AND t_emp.city = ‘chengDu’;

  • 开启动态分区支持

    hive>set hive.exec.dynamic.partition=true; // 开启动态分区
    hive>set hive.exec.dynamic.partition.mode=nostrict; // 设置为非严格模式
    hive>set hive.exec.max.dynamic.partitions.pernode=1000; // 最大动态可分区数
    hive> insert overwrite table t_dynamic partition(country, city) select name, age, addr, country, city from t_emp;

    dynamic
    dynamic2


数据导出

  • 通过hdfs方式导出

    到本地
    hive> dfs -copyToLocal /user/hive_remote/warehouse/t_dynamic /home/tt;

    hive> dfs -get /user/hive_remote/warehouse/t_dynamic /home/t_dynamic;
    这里写图片描述

    到hdfs
    hive> dfs -cp /user/hive_remote/warehouse/t_dynamic /tmp/t_dynamic;
    export hdfs

  • 使用DIRECTORY

    hive> insert overwrite [local] directory ‘/home/tt2’ select * from t_dynamic;
      加local到本地/默认到hdfs

    这里写图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Hive是一种基于Hadoop的数据仓库工具,它提供了一种类似于SQL的查询语言HQL来对数据进行处理。当向Hive中插入数据时,可以使用动态分区来指定数据应该存储在哪些分区中。动态分区是一种可以根据数据行中的某些条件动态生成的分区键,通常用于将数据根据不同的条件进行分类存储。 要向Hive中插入数据动态分区,可以按照以下步骤进行操作: 1. 创包含动态分区的表:首先,需要创一个Hive表,并指定其中的分区键。这些分区键可以根据数据行的条件动态生成。 ```sql CREATE TABLE your_table ( -- 其他列定义 ) PARTITIONED BY (dynamic_partition_key column_type) ``` 在上面的语句中,`your_table`是表的名称,`dynamic_partition_key`是动态分区的键名,`column_type`是该键对应的列类型。 2. 插入数据到表:使用INSERT INTO语句将数据插入到表中。在INSERT INTO语句中,可以使用VALUES或SELECT语句来指定要插入的数据。 ```sql INSERT INTO TABLE your_table PARTITION (dynamic_partition_key = value) VALUES (value1, value2, ...); ``` 或者 ```sql INSERT INTO TABLE your_table SELECT value1, value2, ... FROM other_table; ``` 在上面的语句中,`value`是动态分区键的值,可以根据数据行的条件动态生成。你可以根据实际情况替换为实际的值或查询结果。 需要注意的是,动态分区键的值可以是任何有效的Hive列类型,包括字符串、整数、日期等。同时,动态分区键的值需要在插入数据之前进行适当的处理和转换,以确保其符合分区的条件和要求。 通过上述步骤,你可以将数据插入到Hive中的动态分区中。请确保在插入数据之前已经创了包含动态分区的表,并根据实际情况调整表结构和插入语句中的列类型和值。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值