转载请注明出处:https://blog.csdn.net/l1028386804/article/details/80550840
一、导出的方式
1、Hadoop命令方式
get
hadoop fs -get hdfs://liuyazhuang121:9000/user/hive/warehouse/lyz.db/test_p/st=20180602/data
text
hadoop fs -text hdfs://liuyazhuang121:9000/user/hive/warehouse/lyz.db/test_p/st=20180602/data
2、通过insert ... directory方式
insert overwrite [local] directory '/tmp/ca_employees' [row format delimited fields terminated by '\t'] select name, salary, address from employees
3、shell命令加管道
hive -f/e sed/grep/awk > file
4、第三方工具 sqoop
二、动态分析
1、不需要为不同的分区添加不同的插入语句
2、分区不确认,需要从数据获取
3、几个参数
#使用动态分区 set hive.exec.dynamic.partition=true; #无限制模式,如果模式是strict,则必须有一个静态分区,且放在最前面 set hive.exec.dynamic.partition.mode=nonstrict | strict; #每个节点生成动态分区的最大个数 set hive.exec.max.dynamic.partitions.pernode=10000; #生成动态分区的最大个数 set hive.exec.max.dynamic.partitions=100000; #一个任务最多可以创建的文件数目 #set hive.exec.max.created.files=150000; 限定一次最多打开的文件数 #set dfs.datanode.max.xcievers=8192;
实例:
#创建动态分区表 create table d_part( name string ) partitioned by (value string) row format delimited fields terminated by '\t' lines terminated by '\n' stored as textfile; #根据动态分区导入数据 set hive.exec.dynamic.partition=true; set hive.exec.dynamic.partition.mode=nonstrict; insert overwrite table d_part partition(value) select name, st as value from test_p;