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 ...
随机推荐
- CSS3属性之text-overflow:ellipsis,指定多行文本中任意一行显示...
对于text-overflow:ellipsis,文本超出部分显示...,但要实现这个效果,却有一些必备条件,如下: div{ overflow:hidden; white-space:nowrap; ...
- tp框架,addAll方法报错,返回false
tp框架的批量添加addAll($data)方法很实用,但是注意,数据数组的数据结构要保持一致,不然会返回false.
- Java基础学习总结(48)——Java 文档注释
Java只是三种注释方式.前两种分别是// 和/* */,第三种被称作说明注释,它以/** 开始,以 */结束. 说明注释允许你在程序中嵌入关于程序的信息.你可以使用javadoc工具软件来生成信息, ...
- PL/SQL基本语法
*2.PL/SQL基本语法 1)匿名块 一段不能在数据库存储的PL/SQL. 基本结构如下: DECLARE //变量的声明定义区域(可省略) BEGIN //业务处理 ...
- jquery-fakeloader插件的使用
jquery-fakeloader插件示例代码 link rel="stylesheet" href="../../Content/fakeLoader.css" ...
- SharePoint 2010 安装教程
SharePoint Server 2010作为MOSS 2007的升级版本,自从2009年底发布Beta版本以来就备受关注,网络上已经出现了很多相关的文章,其中也不乏中文的信息. 最近SharePo ...
- eclipse project文件夹下 删除不掉文件夹或者文件的解决的方法
对于新手来说,有时操作失误就会导致eclipse文件夹中的某些子文件夹或者文件无法删除. 这种原因是,在project文件夹中(不是eclipse上显示的.是真实的物理磁盘上的)这个文件夹或者文件已经 ...
- Unity3d修炼之路:用Mesh绘制一个Cube
#pragma strict function Awake(){ var pMeshFilter : MeshFilter = gameObject.AddComponent(typeof(MeshF ...
- Double 与 Float 的值的比較结果
首先看geeksforgeeks上的两个程序: 程序1: #include<stdio.h> int main() { float x = 0.1; if (x == 0.1) print ...
- fancybox关闭弹出窗体parent.$.fancybox.close();
fancybox弹出窗体右上角会自带一个关闭窗体,而且点击遮罩层也会关闭fancybox 有时我们不须要这样进行关闭,隐藏关闭窗体,而且遮罩层不可点击 在弹出窗体页面加一链接进行关闭使用parent. ...