查询数据:
use ods;set /user.password=ODS-SH;select * from base_cdma_all limit 10;
use tag_bonc;select * from dpi_http_userapp_statistics limit 100000;
#设置显示当前使用的数据库
set hive.cli.print.current.db=true;
#设置不优先使用MapReduce
set hive.exec.mode.local.auto=true;
======================导出数据=============================
#导出hive数据到本地(事先要建好目录)
use myexec;
insert overwrite local directory ‘/home/hadoop/res‘
row format delimited
fields terminated by ‘\t‘
select column1,column2 from table1;
#不显式指定分隔符将会以默认的分隔符来分割列
use myexec;
insert overwrite local directory ‘/home/hadoop/res‘
select * from table1;
#导出hive数据到HDFS(不要事先建好目录)
use myexec;
insert overwrite directory ‘/hive_data_to_hdfs‘
select * from table1;
#导出到Hive的另一个表中
use myexec;
insert into table2
row format delimited
fields terminated by ‘\t‘
select * from table1;
#修改存储路径
alter table table1
set location ‘hdfs://172.16.122.200:8020/data/datatest.txt‘;
#创建外部表时指定位置(在数据拷贝到指定hdfs路径的同时,数据插入该external表)
#这种方式常常用于当hdfs上有一些历史数据,而我们需要在这些数据上做一些hive的操作时使用,这种方式避免了数据拷贝开销
CREATE EXTERNAL TABLE MYTEST(num INT, name STRING)
COMMENT ‘this is a test‘
ROW FORMAT DELIMITED FIELDS TERMINATED BY ‘\t‘
STORED AS TEXTFILE
LOCATION ‘/data/test‘;
#创建一个测试用表(内部表)
CREATE TABLE MYTEST2(num INT, name STRING)
COMMENT ‘this is a test2‘
ROW FORMAT DELIMITED FIELDS TERMINATED BY ‘\t‘
STORED AS TEXTFILE;
1)数据不在hdfs上,直接从本地(local)导入hive表
这种方式导入的本地数据可以是一个文件,一个文件夹或者通配符,需要注意的是,如果是文件夹,文件夹内不能包含子目录,同样,通配符只能通配文件
LOAD DATA LOCAL INPATH ‘/home/work/test.txt‘ [OVERWRITE] INTO TABLE MYTEST2;
2)从hdfs导入数据
LOAD DATA INPATH ‘/data/test/test.txt‘ [OVERWRITE] INTO TABLE MYTEST2 [PARTITION (ds=‘2008-08-15‘)];
3)从其它表导入数据
FROM MYTEST3 test3
INSERT OVERWRITE TABLE MYTEST2
select test3.num where name=‘world‘;
4)在创建表的时候通过从别的表中查询出相应的记录并插入到所创建的表中
create table test4
as