码迷,mamicode.com
首页 > 其他好文 > 详细

Hive 实战(1)--hive数据导入/导出基础

时间:2014-07-07 09:53:53      阅读:262      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   java   使用   数据   

 前沿:

  Hive也采用类SQL的语法, 但其作为数据仓库, 与面向OLTP的传统关系型数据库(Mysql/Oracle)有着天然的差别. 它用于离线的数据计算分析, 而不追求高并发/低延时的应用场景. 最显著的特别是, Hive的数据是Schema On Read, 对数据的写入非常的自由和松散, 而对数据的读取则作了各种限制. 而RMDBS则是Schema On Write, 对数据写入限制非常的严苛.

*). 数据导入/导出
  让我们体验以下Hive中数据如何导入:
  1). 创建数据库 db_hive_test;
  CREATE DATABASE db_hive_test;
  则在HDFS的目录/user/hive/warehouse下
  [<username>@<hostname> ~]# sudo -u hdfs hdfs dfs -ls /user/hive/warehouse
  drwxrwxrwt - root hive 0 2014-07-02 10:49 /user/hive/warehouse/db_hive_test.db
  bubuko.com,布布扣

  2). 创建数据表 tb_user

  CREATE TABLE tb_user (
    user_id int,
    username string,
    age int,
    phone string
  ) ROW FORMAT DELIMITED 
  FIELDS TERMINATED BY ‘\t‘ 
  STORED AS TEXTFILE;

  3). 数据准备
  在本地编辑data.txt, 内容如下所示:

  [<username>@<hostname> ~]# cat data.txt 
  1001	lilei	17	13800001111
  1002	hanmm	16	13800001112
  1003	lily	16	13800001113
  1004	lucy	16	13800001114

  4). 导入数据入hive

  LOAD DATA LOCAL INPATH ‘/path/to/data.txt‘ INTO TABLE db_hive_test.tb_user;

  5). 数据验证
  select * from tb_user;
  bubuko.com,布布扣

  是不是很简单? 但为何不使用Insert Into单行插入数据, 实际上hive的定位, 其并不支持单行的数据插入(insert)和修改(update).
  数据的导入可以借助
  #) LOAD DATA语法
  LOAD DATA [LOCAL] INPATH ‘filepath‘ [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 ...)]
  #) INSERT SELECT语法
  INSERT OVERWRITE/INTO TABLE <table_name> [PARTITION(partcol1=val1, partclo2=val2 ...)] SELECT_STATEMENT
  注: OVERWRITE重写,INTO追加。

  6). 创建数据表tb_newuser;

  CREATE TABLE tb_newuser ( 
    user_id int,
    username string,
    age int,
    phone string
  ) ROW FORMAT DELIMITED 
  FIELDS TERMINATED BY ‘\t‘ 
  STORED AS TEXTFILE;

  7). INSERT SELECT

  INSERT INTO TABLE tb_newuser SELECT * FROM tb_user;

  8). 数据验证
  SELECT * FROM tb_newuser;
  bubuko.com,布布扣

  数据表结构复制
  CREATE TABLE tb_newuser02 LIKE tb_user;

  创建表时导入
  CREATE TABLE tb_newuser01 SELECT * FROM tb_user;

  数据如何导出
  导出语法: INSERT OVERWRITE/INTO LOCAL DIRECTORY ‘<directory>‘ SELECT_STATEMENT  

  INSERT OVERWRITE LOCAL DIRECTORY ‘/path/to/data‘ SELECT * FROM tb_user;
  cat /path/to/data/000000_0
  bubuko.com,布布扣

  INSERT OVERWRITE DIRECTORY ‘/path/to/data‘ SELECT * FROM tb_user;
  bubuko.com,布布扣

  Local的有无, 其区别在于, 一个存放在本地, 另一个存放在hdfs上

 

Hive 实战(1)--hive数据导入/导出基础,布布扣,bubuko.com

Hive 实战(1)--hive数据导入/导出基础

标签:style   blog   http   java   使用   数据   

原文地址:http://www.cnblogs.com/mumuxinfei/p/3819291.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!