zoukankan      html  css  js  c++  java
  • Hive基础语法5分钟速览

    Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。

    1.hive创建数据库

    CREATE DATABASE|SCHEMA [IF NOT EXISTS] <database name>;
    

    2.hive创建表

    hive里一般有两种表的结构,表(内部表)和外部表,以下分别是两种表的创建代码:

    --内部表
    CREATE TABLE phone_info(id int, name String, storage String, price double)
    ROW FORMAT DELIMITED //代表一行是一条记录
    FIELDS TERMINATED BY '	'//列是按照table键分开
    STORED AS TEXTFILE[SEQUENCEFILE];//二种最常见的存储格式,一般可以不写
    
    --外部表
    CREATE EXTERNAL TABLE phone_external(id int, name String, price double)
    ROW FORMAT DELIMITED 
    FIELDS TERMINATED BY '	'
    STORED AS TEXTFILE
    LOCATION '</zengzc/phone.txt>';//这里填写外部表数据的hdfs地址,若不指定,则默认存储于/user/hive/warehouse文件夹下以外部表的表名创建一个文件夹,并将属于这个表的数据存放在这里;这里也是内部表的存储位置。
    

    3.hive表中导入数据

    load data local inpath '/home/zengzc/xxx.txt' into table phone_info;
    

    4.hive删除表

    DROP TABLE IF EXISTS phone_info;
    

    5.hive创建临时表存储中间结果

    CREATE TABLE temp_info AS
    SELECT id phone_id, name phone_name, price FROM phone_info
    SORT BY phone_id;
    

    6.hive简单的查询语句

    SELECT * FROM temp_info;
    
    SELECT id phone_id,name phone_name FROM phone_info;
    
    SELECT a.ip,a.name,b.username FROM phone_info a INNER JOIN user b on (a.ip=b.ip);
    

    7.hive批量插入数据到表

    CREATE TABLE phone_info_like LIKE phone_info; //复制表的结构
    
    INSERT INTO phone_info_like SELECT * FROM phone_info;
    
    INSERT OVERWRITE phoen_info_like SELECT * FROM phone_info; //into是追加数据,overwrite是覆盖以及存在的数据,属于重复性校验
    

    8.hive分区表

    CREATE TABLE part_table (
      id int,
      name String,
      ip String,
      city String,
      date String
    )
    PARTITIONED BY (part_flag String) //这里的分区字段可以是表中字段也可以是指定的字段
    ROW FORMAT DELIMITED 
    FIELDS TERMINATED BY ',';
    
    load data local inpath '/home/zengzc/test.txt' into table part_table partition(part_flag='part1');
    load data local inpath '/home/zengzc/test1.txt' into table part_table partition(part_flag='part2');
    
    select * from part_table where part_flag='part1';
    
  • 相关阅读:
    C# 中 Struct 与 Class 的区别,以及两者的适用场合<转转转>
    <转>.NET Framework十年回顾 体积越小功能越强
    一个数组,下标从0到n,元素为从0到n的整数。判断其中是否有重复元素
    在博客园已经一年多时间了,今天开通博客了!
    C#RSA非对称加解密
    无法向会话状态服务器发出会话状态请求请。确保 ASP.NET State Service (ASP.NET 状态服务)已启动
    JavaScript判断浏览器类型及版本(转)
    SQL Server 海量导入数据
    数据库管理方面必知语句(问答)(转)
    JS实现的购物车
  • 原文地址:https://www.cnblogs.com/JasonCeng/p/14136217.html
Copyright © 2011-2022 走看看