• Hive数据仓库笔记(一)


    Hive建表:

    CREATE TABLE records (year STRING,temperature INT, quality INT)

    ROW FORMAT DELIMITED

    FIELDS TERMINATED BY ' ';

    每行三列数据通过tab分隔,数据如果是以tab分隔的可被hive直接识别。

    查看表结构信息:

    desc records;

    加载数据:

    LOAD DATA LOCAL INPATH'/home/data/sample.txt'

    OVERWRITE INTO TABLE records;

    将linux本地的文本数据导入到hive的数据仓库目录(/user/hive/warehouse/records)

    该命令会覆盖掉数据,准确说,它会先删除目录里的老文件,添加新的文件。

    原始数据:

    导入到hive里的数据:

     

    存数据的表在hive里是个文件,存在仓库里,仓库目录由hive.metastore.warehouse.dir属性控制。

    执行查询:

    hive> SELECT year, MAX(temperature) FROMrecords WHERE temperature <> 9999 AND quality IN (0, 1, 4, 5, 9) GROUP BYyear;

    Hive 里的不等于不支持!=,其正确的表达式应该为<>。

    Hive配置设置:

    % hive --config /Users/tom/dev/hive-conf

    指定hive在不同的目录里hive-site.xml配置文件以针对不同的集群。

            

    % hive -hiveconffs.defaultFS=hdfs://localhost

    -hiveconf mapreduce.framework.name=yarn

    -hiveconfyarn.resourcemanager.address=localhost:8032

    设置会话期间的属性。

    % hadoop fs -mkdir /tmp

    % hadoop fs -chmod a+w /tmp

    % hadoop fs -mkdir -p /user/hive/warehouse

    % hadoop fs -chmod a+w /user/hive/warehouse

    给hive所有用户写权限。

    hive> SET hive.enforce.bucketing=true;

    可以在会话期间改变设置。之后又恢复。

    Hive执行引擎:

    Hive默认的执行引擎是MR,现在支持Tez和Spark。

    Tez和spark可以避免中间结果输出到HDFS,甚至是存储在内存中的开销。

    SET hive.execution.engine=tez; 设置执行引擎为Tez。

    日志路径设置:

    % hive -hiveconfhive.log.dir='/tmp/${user.name}'

    日志级别,输出位置

    % hive -hiveconfhive.root.logger=DEBUG,console

    Hive架构:


    Metastore  configurations:

    最常用的选择是用MySQL。

    设置:配置文件

    javax.jdo.option.ConnectionURL : jdbc:mysql://host/dbname?createDataba

    seIfNotExist=true

    javax.jdo.option.ConnectionDriverName  :com.mysql.jdbc.Driver

    用户名和密码也得设置。MySQL 驱动放置Hive的lib目录下。

    Hive的替代物:

    Cloudera Impala  交互式查询,性能比Hive有数量级地提升。

    Presto from Facebook

    Apache Drill

    Spark SQL

    Apache Phoenix  底层是HBase

    Hive基本数据类型:

    BOOLEAN        TINYINT,SMALLINT, INT, and BIGINT   FLOAT and DOUBLE

    DECIMAL 可以设置精度DECIMAL(5,2) 精度值最大为38

    STRING 理论上可以存储2G的数据,实际可能达不到这个值

    VARCHAR :VARCHAR(100)    CHAR:CHAR(100) 固定长度的字符串,如果有必要会有空格填充。

    BINARY 存储可变长度的二进制数据

    TIMESTAMP   DATE年月日

    复杂数据类型:

    ARRAY, MAP, STRUCT, and UNION

    STRUCT:类型组合

    UNION:类型里选择一种类型

    CREATE TABLE complex (

    c1 ARRAY<INT>,

    c2 MAP<STRING, INT>,

    c3 STRUCT<a:STRING, b:INT, c:DOUBLE>,

    c4 UNION<STRING, INT>

    )

    操作和功能:

    SHOW FUNCTIONS 列出hive支持功能

    hive> DESCRIBE FUNCTION length;   功能的具体描述

    length(str | binary) - Returns the lengthof str or number of bytes in binary

    data

    外部表和内部表:

    CREATE TABLE managed_table (dummy STRING);

    LOAD DATA INPATH '/user/tom/data.txt' INTOtable managed_table;

    移动hdfs://user/tom/data.txt 到hive的数据仓库目录下。

    删除表:DROP TABLE managed_table;

    外部表:

    CREATE EXTERNAL TABLE external_table (dummy STRING)

    LOCATION '/user/tom/external_table';

    LOAD DATA INPATH'/user/tom/data.txt' INTO TABLE external_table;

    外部表可以指定数据存储的路径。EXTERNAL关键字下,hive不检查在定义的时的外部位置是否存在,意味着可以先创建表在创建这些数据。

    删除外部表仅删除元数据信息,数据还存在。 

     

  • 相关阅读:
    ES6
    JavaScript小练习2
    JavaScript实现多重继承
    一个定高,一个高度自适应的布局
    实例教程:1小时学会Python(转)
    备份文件的python脚本(转)
    Python2.5/2.6实用教程:基础篇(转)
    Python 读写 Excel(转)
    python实用技巧 : Filtering os.walk(转)
    Python:文件操作技巧(File operation)(转)
  • 原文地址:https://www.cnblogs.com/bigdata1024/p/8387432.html
Copyright © 2020-2023  润新知