hive导入导出数据案例
查询数据:
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;
#用hive的-e和-f參数来导出数据。当中-e 表示后面直接接带双引號的sql语句;而-f是接一个文件(文件的内容为一个sql语句)
hive -e "use myexec;select * from table1" >> /home/hadoop/res/data1.txt
#这样的方式不会启用MapReduce
hive -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 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
select id, name, tel
from wyp;
hive导入导出数据案例的更多相关文章
- Mysql & Hive 导入导出数据
---王燕行转列sql select split(concat_ws(',',collect_set(cast(smzq as string))),',')[1] ,split(concat_ws(' ...
- Hive导入导出数据的方法
Hive导入数据的方式 官网文档: LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION (p ...
- 利用sqoop将hive数据导入导出数据到mysql
一.导入导出数据库常用命令语句 1)列出mysql数据库中的所有数据库命令 # sqoop list-databases --connect jdbc:mysql://localhost:3306 ...
- 【转】Hive导入10G数据的测试
原博文出自于: http://blog.fens.me/hadoop-hive-10g/ 感谢! Hive导入10G数据的测试 让Hadoop跑在云端系列文章,介绍了如何整合虚拟化和Hadoop,让H ...
- Hive导入10G数据的测试
Hive导入10G数据的测试 让Hadoop跑在云端系列文章,介绍了如何整合虚拟化和Hadoop,让Hadoop集群跑在VPS虚拟主机上,通过云向用户提供存储和计算的服务. 现在硬件越来越便宜,一台非 ...
- CRL快速开发框架系列教程九(导入/导出数据)
本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...
- mysql导入导出数据中文乱码解决方法小结
linux系统中 linux默认的是utf8编码,而windows是gbk编码,所以会出现上面的乱码问题. 解决mysql导入导出数据乱码问题 首先要做的是要确定你导出数据的编码格式,使用mysqld ...
- Android开发笔记:SQLite导入导出数据
SQLite是Android中最方便使用的数据库了,现在看下如何快速的在SQLite中导入导出数据. 首先由于是.NET项目转Android,原有数据库使用的是SQLSERVER,由于项目相同部分结构 ...
- 解决mysql导入导出数据乱码问题
最近在linux上面用mysqldump导出数据,放在windows系统中导入就会出现中文乱码,然后就会导致出现: Unknown MySQL server host和Can't connect to ...
随机推荐
- 【HDU 6299】Balanced Sequence
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 我们贪心地把每一个括号序列能匹配都按照栈的规则都匹配出来. (直接递增匹配对数*2就可以了 最后栈里面就只剩下类似))))((((( ...
- ASP.NET-Session与复杂数据类型
原文链接:http://www.cnblogs.com/fish-li/archive/2013/05/28/3104750.html Session与复杂数据类型 Session有三种工作模式,拿A ...
- $.ajax() 获取不到return 返回值
/*常见错误示例 直接在 ajax 里面return 结果 */ function demo(){ $.ajax({ url : 'test.do', type : "post", ...
- redis五种数据结构的指令
一.基本常用命令 select 选择数据库 0-15共16个库 keys 返回所有的键 keys mylist*代表取出所有mylist开头的键 exists 确认一个键存在不 del 删除 ...
- sqlplus登录提示:ORA-12162:TNS:net service name is incorrectly specified错误
[root@localhost ~]# su - oracle [oracle@localhost ~]$ sqlplus '/as sysdba' SQL*Plus: Release 11.2.0. ...
- node 内存消息队列
var net = require('net') var clients = [] ,msgs = {} function unWrapMsg(data){ data = data.toString( ...
- Codeforce 163 A. Substring and Subsequence DP
A. Substring and Subsequence One day Polycarpus got hold of two non-empty strings s and t, consist ...
- CoreData 从入门到精通(六)模型版本和数据迁移
前面几篇文章中讲的所有内容,都是在同一个模型版本上进行操作的.但在真实开发中,基本上不会一直停留在一个版本上,因为需求是不断变化的,说不定什么时候就需要往模型里添加新的字段,添加新的模型,甚至是大规模 ...
- elementUI 易错点
1.element table里面添加单选时,如果存在下拉框的筛选功能,那么每次下拉框筛选条件变化时 都得清空之前选中的信息,如果不数据更新后如果更新后的数据跟之前选中的相同 则会无法选中
- FastJSON杂项
//通过TypeReference解决泛型的问题 List<Integer> rst = JSON.parseObject(v,new TypeReference<List<I ...