赞
踩
语法:
- insert overwrite table dest_table partition(dt='xxxxxx')selectc1,c2from src_tablewhere......
- 复制代码
select中的字段顺序与dest_table的一定要一致,字段名与dest_table的最好要一致。
语法:
- hive> load data local inpath '/home/a/b/c/xxxx.txt' overwrite into table dest_table partition(dt='xxxxxx');
- 复制代码
实例:
- $ hive -e "load data local inpath '/home/a/b/c/tb_v1.txt' into table test.tb_test partition(dt='2020-03-10') "
- hive> dfs -du -h hdfs://d/test.db/tb_test/dt=2020-03-10 ;131 hdfs://d/test.db/tb_test/dt=2020-03-10/tb_v1.txt141 hdfs://d/test.db/tb_test/dt=2020-03-10/tb_v1_copy_1.txt -- 重命名的文件hive> select * from tb_test where dt = '2020-03-10';OK123 华为Mate10 31 999.0 20 2020-03-10456 华为Mate30 31 2999.0 30 2020-03-10789 小米5 31 800.0 20 2020-03-101235 小米6 31 900.0 100 2020-03-104562 OPPO Findx 31 3900.0 50 2020-03-10123 华为1010Mate10 31 999.0 20 2020-03-10 -- 如下是第二次复制过来的5条记录456 华为3030Mate30 31 2999.0 30 2020-03-10789 小米5 31 800.0 20 2020-03-101235 小米6 31 900.0 100 2020-03-104562 OPPO Findx 31 3900.0 50 2020-03-10Time taken: 0.051 seconds, Fetched: 10 row(s)hive>
- 复制代码
语法:
- hive> load data inpath 'hdfs:....../part-r-00000001.lzo' overwrite into table dest_table partition(dt='xxxxxx');
- 复制代码
实例:
- hive> load data inpath 'hdfs://d/test.db/tb_test/dt=2020-03-08/tb_v2.txt' overwrite into table test.tb_test2 partition(dt = '2020-03-08');
- 日志:Loading data to table test.tb_test2 partition (dt=2020-03-08)Partition test.tb_test2{dt=2020-03-08} stats: [numFiles=1, numRows=0, totalSize=131, rawDataSize=0]OKTime taken: 0.767 seconds
- hive> dfs -du -h hdfs://d/test.db/tb_test/dt=2020-03-08 ;-- 原数据文件已不存在
- hive> dfs -du -h hdfs://d/test.db/tb_test2/dt=2020-03-08 ;131 hdfs://d/test.db/tb_test2/dt=2020-03-08/tb_v2.txthive> select * from test.tb_test2 ;OK123 华为Mate10 31 999.0 20 2020-03-08456 华为Mate30 31 2999.0 30 2020-03-08789 小米5 31 800.0 20 2020-03-081235 小米6 31 900.0 100 2020-03-084562 OPPO Findx 31 3900.0 50 2020-03-08Time taken: 0.407 seconds, Fetched: 5 row(s)
- 复制代码
这里是把hdfs上的文件移动(剪切)到目的分区的路径下,源文件已不存在。
语法:
- hive> dfs -cp scr_path/dt=xxxx/* dest_path/dt=xxxx/ ;hive> alter table dest_table add partition(dt='xxxx');hive> select * from dest_table where dt = 'xxxx'
- 复制代码
语法:
- hive> dfs -mv scr_path/dt=xxxx/* dest_path/dt=xxxx/ ;hive> alter table dest_table add partition(dt='xxxx');hive> select * from dest_table where dt = 'xxxx';
- 复制代码
- $ hadoop distcp 配置参数(-pt -overwrite等)hdfs:......源表1/dt=xxxx/*hdfs:......源表2/dt=xxxx/*hdfs:......目的表/dt=xxxx$ hive -e "select * from 目的表 where dt = 'xxxx'"
- 复制代码
distcp(分布式拷贝)是用于大规模集群内部和集群之间拷贝的工具。 它使用Map/Reduce实现文件分发,错误处理和恢复,以及报告生成。
语法:
- hive> dfs -put 'home/a/b/c/t1.txt' dest_path/dt=xxxx
- 复制代码
hive> dfs -copyFromLocal 'home/a/b/c/t1.txt' dest_path/dt=xxxx
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。