hive导入导出数据案例

网友投稿 258 2022-11-23

hive导入导出数据案例

查询数据:use ods;set /user.password=ODS-SH;select * from base_cdma_all limit 10;use tag_bonc;select * from dpi_limit 100000; #设置显示当前使用的数据库set hive.cli.print.current.db=true;#设置不优先使用MapReduceset hive.exec.mode.local.auto=true;======================导出数据=============================#导出hive数据到本地(事先要建好文件夹)use myexec;insert overwrite local directory '/home/hadoop/res'row format delimitedfields 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 table2row format delimitedfields terminated by '\t'select * from table1;#用hive的-e和-f參数来导出数据。当中-e 表示后面直接接带双引號的sql语句;而-f是接一个文件(文件的内容为一个sql语句)hive -e "use myexec;select * from table1" >> /home/hadoop/res/data1.txt#这样的方式不会启用MapReducehive -f mytest.hql >> /home/hadoop/res.txt当中mytest.hql内容为:use myexec;select * from table1;=====================导入数据==========================外部表、内部表都能够分别载入本地和HDFS上的数据,创建表时最好指定列分隔符内部表假设使用load data命令,都是把hdfs上的数据(假设是本地数据则先上传到HDFS)移动(剪切)到数据仓库所在文件夹外部表假设在创建时指定了存放数据的路径,则在load data时数据是被移动到创建表时指定的文件夹,否则同上两者的主要差别是:外部表建表的同一时候指定hdfs路径。在数据复制到指定hdfs路径的同一时候。也同一时候完毕数据插入external表(仅仅是保持映射关系),此时数据没有被移动(数据仓库里没有显式存放该数据)删除内部表会把数据一起删除,而删除外部表则仅仅是使得在hive下查询不到此表(元数据被删了),数据本身没有被删除,依旧存在对应的数据仓库文件夹下#改动存储路径alter table table1set 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 TEXTFILELOCATION '/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 test3INSERT OVERWRITE TABLE MYTEST2select test3.num where name='world';4)在创建表的时候通过从别的表中查询出对应的记录并插入到所创建的表中create table test4asselect id, name, tel from wyp;

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:工业互联网怎样赋能企业
下一篇:SpringBoot事件发布和监听详解
相关文章

 发表评论

暂时没有评论,来抢沙发吧~