zoukankan      html  css  js  c++  java
  • Hive 实战(1)--hive数据导入/导出基础

     前沿:

      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
      

      2). 创建数据表 tb_user

      CREATE TABLE tb_user (
        user_id int,
        username string,
        age int,
        phone string
      ) ROW FORMAT DELIMITED 
      FIELDS TERMINATED BY '	' 
      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;
      

      是不是很简单? 但为何不使用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 '	' 
      STORED AS TEXTFILE;

      7). INSERT SELECT

      INSERT INTO TABLE tb_newuser SELECT * FROM tb_user;

      8). 数据验证
      SELECT * FROM tb_newuser;
      

      数据表结构复制
      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
      

      INSERT OVERWRITE DIRECTORY '/path/to/data' SELECT * FROM tb_user;
      

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

  • 相关阅读:
    内网渗透笔记
    shift粘滞键后门创建/复原批处理
    通过Wireshark抓包进行Cookie劫持
    最全前端资源汇集 (持续整理中)
    HTML5教程之html 5 本地数据库(Web Sql Database)
    myslq 基本命令
    Node.js面试题:侧重后端应用与对Node核心的理解
    44个 Javascript 变态题解析 (上下)
    BAT及各大互联网公司前端笔试面试题--Html,Css篇
    Web前端面试题集锦
  • 原文地址:https://www.cnblogs.com/mumuxinfei/p/3819291.html
Copyright © 2011-2022 走看看