zoukankan      html  css  js  c++  java
  • hive学习笔记(初级)

    hive数据类型

         tinyint
         smallint
         int
         bigint
         String                       //''|""
         varchar                   //1-65535
         char                       //255
         timestamp             //format "YYYY-MM-DD HH:MM:SS.fffffffff"
         Date                      //form{{YYYY-MM-DD}}
         decimal
         UNIONTYPE           //联合类型
         NULL

    hive的基本操作

    create database if not exists 库名; #创建库
    alter database dbname set dbproperties('edited-by'='joe'); #修改库(不能删除或“重置”数据库属性)
    describe database extended dbname; #查询库
    drop database [if exists] dbname; #删除库
    desc database extended 库; #显示库的扩展信息

    hive>create external table dat0204(filmname string ,filmdate date ,filmscore string)
          >comment '别名'
          >row format delimited
          >fields terminated by ' '
          >lines terminated by ' '
          >stored as textfile; #创建外部表,外部表相对来说更加安全些,数据组织也更加灵活,方便共享源数据。

    hive>create table if not exists dat0204(id int , name string , age int)
           >comment '别名'
           >row format delimited
           >fields terminated by ' '
           >lines terminated by ' '
           >stored as textfile; #创建内部表

    desc 表;                              #表的描述
    desc formatted 表;               #查询表的结构
    desc extended 表;                #显示表的扩展信息
    select * from 表;                  #查询表的信息
    create table 库名1.表名1 like 库名2.表名2;            #复制表(表结构+数据)

    alter table hive1.test2 add partition(province='hebei',city='baoding')            #添加分区

    show partitions hive1;                #查看表的分区

    insert overwrite table test2 partition(provice='hebei',city='shijiazhuang') select id , name , age from test1;      #增加数据

    drop table 表;                       #删除空表
    drop table 表 cascade;          #删除非空表

    show tables like '*name*'; #模糊搜索表

    插入数据(加载到HDFS)

    hive>load data local inpath 'path/filename' overwrite into table 表名;                  #从本地数据导入Hive表

    hive>load data inpath 'path/filename' into table 表名;                                        #HDFS上导入数据到Hive表

    hive> insert overwrite directory "hodoop目录"  select user, login_time from user_login;           #将查询数据输出hdfs目录

    $ hive -e "sql语句" > /tmp/out.txt                                                            #保存sql语句查询信息到本地文件 

    hive命令模型

    hive>dfs -lsr /                         //显示dfs下文件:路径/库/表/文件
    hive>dfs -rmr /目录                 //dfs命令,删除目录
    hive>!clear ;                          //hive中执行shell命令
    hive>!dfs -lsr / ;                     //hive中执行hdfs命令

    元数据都储存在mysql

    use hive用户库; 

    select * from VERSION;                                                            #查看hive版本
    select * from TBLS G;                                                              #查看有哪些表,易区分各表。
    select * from SDS G;                                                               #查看表对应的hdfs目录的metedata
    select * from PARTITIONS where TBL_ID=1 G;                           #查看某个表的partitions:
    select * from COLUMNS_V2;                                                      #查看某个表的列:
    select * from PARTITION_KEYS;                                                 #查看某个表的partition
    select * from DBS;                                                                   #查看数据仓库信息

    调优
    1.explain———解释执行计划
    explain select sum(*) from test2 ;

    hive的起源与应用

    1、起源:由Facebook开源用于解决海量结构化日志的数据统计;
    2、结构:Hive是基于hadoop的一个数据仓库工具,可以将结构化的数据文件映射成一张表,并提供类SQL查询功能;
    (使用HQL作为查询接口;使用HDFS存储;使用MapReduce计算;)

    本质是:将HQL转化成MapReduce程序。
    3、应用:适合离线数据处理。
    4、schema(模式,元信息存放到数据库中)
    5、数据库和表都是路径。

    6、hive在写操作是不校验,读时校验。

  • 相关阅读:
    《Java编程思想》笔记 第二十章 注解
    《Java编程思想》笔记 第十九章 枚举类型
    《Java编程思想》笔记 第十七章 容器深入研究
    一个关于Java 多线程问题的知识点
    Tomcat 部署2个项目,只有一个可以访问的解决方案
    抄书(Copying Books, UVa 714)
    Checker Challenge
    Case of the Zeros and Ones
    Tom and paper
    不规则棋盘问题
  • 原文地址:https://www.cnblogs.com/lanchang/p/6999756.html
Copyright © 2011-2022 走看看