--直接插入表中insert overwrite table ext_task partition(taskname='wordcount04')IFNOTEXISTSselect
word,
num
from ext_task
where taskname='wordcount03';--直接插入表分区路径中(执行完之后需要执行msck语句)insert overwrite directory '/user/hive/warehouse/ext_task/taskname=wordcount04'select
word,
num
from ext_task
where taskname='wordcount03';
msck repair table ext_task;
2)通过select,将select数据追加到表分区.
--直接追加插入表insertintotable ext_task partition(taskname='wordcount04')select
word,
num
from ext_task
where taskname='wordcount03';--不能 insert into 到hdfs路径中,只能insert overwrite
--语法格式INSERT OVERWRITE [LOCAL] DIRECTORY directory1 [ROW FORMAT row_format][STORED AS file_format]SELECT...FROM...
1)将select的数据写入到hdfs文件中,多层目录会自动创建.
-- 查询ext_task 表中分区为wordcount03 的数据,以AVRO 格式写入到hdfs指定目录;此处必须是 overwrite 不能是into,否则报错insert overwrite directory 'hdfs://ns1/user/panniu/hive/output1' STORED AS AVRO
select word, num from ext_task where taskname='wordcount03';
-- 查询ext_task 表中分区为wordcount03 的数据,以AVRO 格式写入到本地目录中insert overwrite local directory '/home/panniu/hive_test/0214/output1' STORED AS AVRO
select word, num from ext_task where taskname='wordcount03';-- 导出数据时,除了可以指定文件的存储格式,还可以指定列的分割符号-- 查询ext_task 表中分区为wordcount03 的数据,以 TEXTFILE 格式写入到本地目录中,并将列使用','分割insert overwrite local directory '/home/panniu/hive_test/0214/output1'ROW FORMAT DELIMITED
FIELDSTERMINATEDBY','
STORED AS TEXTFILE
select word, num from ext_task where taskname='wordcount03';
2.hive数据写入多个文件
--语法格式FROM from_statement
INSERT OVERWRITE [LOCAL] DIRECTORY directory1 row_format
select_statement1 where[INSERT OVERWRITE [LOCAL] DIRECTORY directory2 row_format
select_statement2 where]...
row_format
: DELIMITED [FIELDSTERMINATEDBYchar[ESCAPEDBYchar]][COLLECTION ITEMS TERMINATEDBYchar][MAP KEYSTERMINATEDBYchar][LINESTERMINATEDBYchar][NULL DEFINED ASchar]
说明:
• 批量导出多个文件,需要导出文件的类型一致;如果一个是avro,一个是text,报错.
• 导出到文件系统的数据都序列化成text,非原始类型字段会序列化成json,导出文件以^A分隔 \n结尾的文本数据.
• INSERT OVERWRITE 到HDFS目录,可以通过MR job实现并行写入;这样在集群上抽取数据不仅速度快,而且还很方便.-- 从一张表中导出两个文件到不同的路径from ext_task
insert overwrite directory 'hdfs://ns1/user/panniu/hive/output2' STORED AS AVRO
select
word,
num
where taskname='wordcount03'insert overwrite local directory '/home/panniu/hive_test/0214/output2' STORED AS AVRO
select
word,
num
where taskname='wordcount03';
3.通过hive -e 命令导出
# hive -e "sql"# 导出的数据导出到out1;错误的信息,导出到err.log
nohup hive -e "use class10;select word, num from ext_task where taskname='wordcount03';" 1>./out1 2>./err.log &
# 数据输出,及错误输出均输出到u1
nohup hive -e "use class10;select * from user_install_status_limit;" > ~/u1 2>&1 &
# 数据输出到u3,错误日志输出到无底洞
nohup hive -e "use class10;set mapred.reduce.tasks=1;select * from user_install_status_limit;" 1> ~/u3 2> /dev/null &
# 数据输出到u3,错误日志输出到err.log
nohup hive -e "use class10;set mapred.reduce.tasks=1;select * from user_install_status_limit;" 1> ~/u3 2> ~/err.log &