zoukankan      html  css  js  c++  java
  • Hive小结

    (一).hive基本介绍

    Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能

    其他知识:
    DML(data manipulation language)数据操控语言
    常用的select,update,insert,delete;主要用来对数据库的数据进行一些操作
    DDL(data definition language)数据库定义语言
    常用的create,alter,drop;主要是用在定义或改变表的结构,数据类型,表之间的链接和约束等初始化工作上
    DCL(data control language)数据库控制语言
    用来设置或更改数据库用户或角色权限的语句

    ###########################################
    ############hive常用命令##################

    1.创建表

    1.1建表语法
    CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name

    [(col_name data_type [COMMENT col_comment], ...)]

    [COMMENT table_comment]

    [PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)]

    [CLUSTERED BY (col_name, col_name, ...)

    [SORTED BY (col_name [ASC|DESC], ...)] INTO num_buckets BUCKETS]

    [ROW FORMAT row_format]

    [STORED AS file_format]

    [LOCATION hdfs_path]


    1.2参数说明:
    ①EXTERNAL关键字可以让用户创建一个外部表,在建表的同时指定一个指向实际数据的路径(LOCATION),Hive 创建内部表时,会将数据移动到数据仓库指向的路径;若创建外部表,仅记录数据所在的路径,不对数据的位置做任何改变。在删除表的时候,内部表的元数据和数据会被一起删除,而外部表只删除元数据,不删除数据
    ②ROW FORMAT 用户在建表的时候可以自定义 SerDe 或者使用自带的 SerDe。如果没有指定 ROW FORMAT 或者 ROW FORMAT DELIMITED,将会使用自带的 SerDe。在建表的时候,用户还需要为表指定列,用户在指定表的列的同时也会指定自定义的 SerDe,Hive通过 SerDe 确定表的具体的列的数据
    ③STORED AS 指定用户源文件存储格式,常用的有以下几种: TEXTFILE, 默认格式,建表时不指定默认为这个格式;SEQUENCEFILE,一种Hadoop API提供的二进制文件,使用方便、可分割、可压缩等特点;RCFILE,一种行列存储相结合的存储方式; ORC,hive给出的新格式,属于RCFILE的升级版,性能有大幅度提升.



    1.3样例:

    CREATE EXTERNAL TABLE IF NOT EXISTS hive_table_user
    (
    userid STRING COMMENT '用户id'
    ,username STRING COMMENT '用户姓名'
    ,sex STRING COMMENT '用户性别'
    ,address STRING COMMENT '家庭地址'
    )
    COMMENT '用户表'
    PARTITIONED BY (pt_d VARCHAR(8) COMMENT '天分区', pt_h VARCHAR(2) COMMENT '小时分区')
    ROW FORMAT DELIMITED
    FIELDS TERMINATED BY '01'
    LINES TERMINATED BY ' '
    STORED AS ORC
    LOCATION 'hdfs://test01/test02/hive_table_user'
    TBLPROPERTIES('orc.compress'='ZLIB');


    2.常用的sql命令:
    (1)show tables;
    (2)use db2;
    ...

    #################################################
    ############scala操作hive##################
    import org.apache.spark.sql.{Dataset, SparkSession}

    val ss = SparkSession.builder().getOrCreate()
    val sc = ss.sparkContext
    val sqlContext = ss.sqlContext
    import sqlContext.implicits._

    //读取hive表,获得 Dataset[ROW]
    val contentDF = sqlContext.sql("select userid,mathscore,physicscore,address from user_table where pt_d=20190101").select("userid", "mathscore", "physicscore", "address")
    .where("userid is not null")
    .where("mathscore is not null")
    .where("physicscore is not null")

  • 相关阅读:
    bzoj4289
    bzoj3033
    bzoj3144
    896C
    bzoj4430
    bzoj4455
    bzoj5117
    BZOJ 1564: [NOI2009]二叉查找树
    BZOJ1261: [SCOI2006]zh_tree
    BZOJ1090: [SCOI2003]字符串折叠
  • 原文地址:https://www.cnblogs.com/ShyPeanut/p/11265332.html
Copyright © 2011-2022 走看看