hive 订阅
hive是基于Hadoop的一个数据仓库工具,用来进行数据提取、转化、加载,这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。hive数据仓库工具能将结构化的数据文件映射为一张数据库表,并提供SQL查询功能,能将SQL语句转变成MapReduce任务来执行。Hive的优点是学习成本低,可以通过类似SQL语句实现快速MapReduce统计,使MapReduce变得更加简单,而不必开发专门的MapReduce应用程序。hive十分适合对数据仓库进行统计分析。 [1] 展开全文
hive是基于Hadoop的一个数据仓库工具,用来进行数据提取、转化、加载,这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。hive数据仓库工具能将结构化的数据文件映射为一张数据库表,并提供SQL查询功能,能将SQL语句转变成MapReduce任务来执行。Hive的优点是学习成本低,可以通过类似SQL语句实现快速MapReduce统计,使MapReduce变得更加简单,而不必开发专门的MapReduce应用程序。hive十分适合对数据仓库进行统计分析。 [1]
信息
外文名
hive
兼容性
hadoop生态圈
定    义
在Hadoop上的数据仓库基础构架
依    赖
jdk,hadoop
所属学科
大数据、数据分析
hive简介
hive是基于Hadoop构建的一套数据仓库分析系统,它提供了丰富的SQL查询方式来分析存储在Hadoop分布式文件系统中的数据:可以将结构化的数据文件映射为一张数据库表,并提供完整的SQL查询功能;可以将SQL语句转换为MapReduce任务运行,通过自己的SQL查询分析需要的内容,这套SQL简称Hive SQL,使不熟悉mapreduce的用户可以很方便地利用SQL语言‘查询、汇总和分析数据。而mapreduce开发人员可以把自己写的mapper和reducer作为插件来支持hive做更复杂的数据分析。它与关系型数据库的SQL略有不同,但支持了绝大多数的语句如DDL、DML以及常见的聚合函数、连接查询、条件查询。它还提供了一系列的1:具进行数据提取转化加载,用来存储、查询和分析存储在Hadoop中的大规模数据集,并支持UDF(User-Defined Function)、UDAF(User-Defnes AggregateFunction)和USTF(User-Defined Table-Generating Function),也可以实现对map和reduce函数的定制,为数据操作提供了良好的伸缩性和可扩展性。 [2]  hive不适合用于联机(online)事务处理,也不提供实时查询功能。它最适合应用在基于大量不可变数据的批处理作业。hive的特点包括:可伸缩(在Hadoop的集群上动态添加设备)、可扩展、容错、输入格式的松散耦合。 [2] 
收起全文
精华内容
下载资源
问答
  • Hive

    万次阅读 2019-11-20 15:01:13
    Hive基本概念 ​ 是一个基于hadoop的数据仓库工具,可以将结构化数据映射成一张数据表,并提供类SQL的查询功能。 Hive的意义是什么 ​ 背景:hadoop是个好东西,但是学习难度大,成本高,坡度陡。 ​ 意义(目的)...

    Hive基本概念

    ​ 是一个基于hadoop的数据仓库工具,可以将结构化数据映射成一张数据表,并提供类SQL的查询功能。

    Hive的意义是什么

    ​ 背景:hadoop是个好东西,但是学习难度大,成本高,坡度陡。

    ​ 意义(目的):降低程序员使用hadoop的难度。降低学习成本。

    Hive可以对数据进行存储与计算

    ​ 存储使用HDFS存储

    ​ 计算使用MapReduce进行计算。

    Hive的特性

    ​ 1、扩展性 : Hive的扩展性与集群的扩展性相同

    ​ 2、延展性:Hive支持用户自定义函数,编写符合自己业务需求的函数。

    ​ 3、容错性:节点出现问题(宕机/断电)SQL仍可完成执行。

    Hive缺点

    ​ 每次的执行开销较大,任务运行时间较长,延时较高。

    Hive的内部组成架构

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ww0s6L5U-1574233245912)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1574126259456.png)]

    元数据:描述数据的数据(属性)

    ​ 表名称、字段名,字段的数据类型。

    内部执行流程

    ​ 解释器 -> 编译器 -> 优化器 -> 执行器

    数据格式:

    Hive中没有定义专门的数据格式

    数据格式部分自定义:

    ​ 列分隔符(通常为空格、”\t”、”\x001″)

    ​ 行分隔符(”\n”)

    ​ 读取文件数据的方法(Hive 中默认有三个文件格式 TextFile,SequenceFile 以及 RCFile)。

    Hive在加载数据的过程就是拷贝数据的过程,不需要特定的转化。不会对数据本身进行任何修改,甚至不会对数据进行扫描。

    Hive 中不支持对数据的改写和添加(对文本内数据的添加),

    Hive 在加载数据的过程中不会对数据中的某些 Key 建立索引。所以Hive不适合在线数据查询(要求相应速度快)。

    总结:hive具有sql数据库的外表,但应用场景完全不同,hive只适合用来做批量数据统计分析。

    hive支持的数据格式

    ​ 可支持Text,

    ​ SequenceFile,

    ​ ParquetFile,

    ​ ORC格式

    ​ RCFILE等

    Hive元数据

    ​ DB、数据库

    ​ Table,内部表

    ​ External Table,外部表

    ​ Partition,分区

    ​ Bucket,分桶

    Hive安装部署

    ​ 1、derby版hive直接使用

    ​ 每个节点自己维护自己的元数据库(derby),导致多个节点之间元数据不共享。

    ​ 2、mysql共享hive元数据

    ​ 2.1安装mysql

    ​ mysq不推荐使用RPM安装,建议使用yum进行安装

    ​ yum install -y mysql mysql-server mysql-devel

    ​ /etc/init.d/mysqld start

    ​ 配置远程连接(root 只用123456密码)

    ​ grant all privileges on . to ‘root’@’%’ identified by ‘123456’ with grant option;

    ​ 配置mysql用户 root 密码是123456

    ​ update user set password=password(‘123456’) where user=‘root’;

    ​ 2.2 安装HIve

    ​ 现在第一个节点解压hive的安装包。

    ​ 在解压后的目录conf中修改配置文件

    ​ hive-env.sh

    ​ 配置HADOOP_HOME

    ​ 配置HIVE_CONF_DIR

    ​ hive-site.xml

    ​ 添加连接Mysql的配置

    ​ 将解压后的文件夹拷贝到其他节点

    ​ 配置环境变量

    ​ 将mysql-connector-java-5.1.38.jar 上传到HIVE的lib目录下。

    Hive的访问方式

    ​ 1、在Hive客户端,配置hive到环境变量的前提下,在节点的任意位置 直接数据hive + 回车

    ​ [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1BmryL2V-1574233245913)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1574208461234.png)]

    ​ 2、

    ​ 启动hiveserver2 服务

    ​ hive --service hiveserver2

    ​ 进行连接

    ​ 进入beelin的shell窗口

    ​ 连接hiveserver2服务

    ​ !connect jdbc:hive2://node01:10000

    ​ 输入root 和密码 123456

    ​ 0: jdbc:hive2://node01:10000>
    ​ 0: jdbc:hive2://node01:10000>

    ​ 0: jdbc:hive2://node01:10000> show databases;

    ​ ±---------------±-+
    ​ | database_name |
    ​ ±---------------±-+
    ​ | default |
    ​ | myhive |
    ​ ±---------------±-+

    Hive传选项

    ​ hive -e ‘操作命令’

    ​ hive -e ‘show databases;’

    ​ hive -f 文件名(文件内是操作命令)

    ​ hive -f test.sql

    数据库的基本操作

    ​ 1、数据库的增删改查

    ​ 增 : create database [ if not exists ] myhive ;

    ​ 删 : drop database myhive ; (数据库内没有表可以删除,有表不能删除)

    ​ 改 :数据库不允许修改

    ​ 查 :show databases;

    ​ 查看详细信息:

    ​ desc database myhive2;

    ​ desc database extended myhive2;

    ​ 数据库的切换:

    ​ use myhive(数据库名);

    hive的数据库、表、分区在HDFS的表现形式是文件夹

    数据库的默认路径:/user/hive/warehouse

    ​ 自定义hive数据库的路径:create database myhive2 location ‘/myhive2’;

    数据表的基本操作(增删改查)

    ​ 创建基本数据表(内部表):

    create table tableName(字段名称 字段类型,字段名称 字段类型)

    ​ create table tableName(字段名称 字段类型,字段名称 字段类型)

    ​ ROW FORMAT DELIMITED IELDS TERMINATED BY char (char分隔符)

    ​ 指定数据中字段与字段的分隔符 ‘\t’ 或 ‘,’ 或 ‘|’ 或其他

    ​ 创建外部数据表:

    create EXTERNAL table tableName(字段名称 字段类型,字段名称 字段类型)

    ​ 建外部表需要指定数据的存储路径。通过LOCATION进行指定。

    内部表与外部表的区别:

    ​ 在删除内部表时:内部表删除将表的元数据和数据同时删除。

    ​ 在删除外部表时:外部表的元数据被删除,数据本身不删除。

    删除表

    ​ drop table tablename;

    修改表

    ​ alter tablename ***

    查询表

    ​ show tables;

    ​ desc tablename;

    Hive的数据类型

    ​ 基本数据类型

    ​ INT BIGINT FLOAT DOUBLE DEICIMAL STRING VARCHAR CHAR
    ​ BINARY TIMESTAMP DATE INTERVAL ARRAY

    ​ 复杂数据类型

    ​ MAP STRUCT UNION

    create table stu3 as select * from stu2; 复制数据复试表结构

    create table stu4 like stu2; 不复制数据复试表结构。

    加载数据

    ​ 从linux中加载数据到hive

    ​ load data local inpath ‘数据路径’ into table 表名;

    ​ 从hdfs中加载数据到hive,并覆盖

    ​ load data inpath ‘数据路径’ overwrite into table 表名;

    外部表

    ​ create external table techer (t_id string,t_name string) row format delimited fields terminated by ‘\t’;

    ​ 加载数据

    ​ load data local inpath ‘/export/servers/hivedatas/techer .csv’ into table techer ;

    ​ 在hdfs查看表中的数据

    ​ hadoop fs -ls /user/hive/warehouse/myhive.db/techer

    ​ 在hive中查询

    ​ select * from techer

    ​ 删除数据表techer

    ​ drop table techer;

    ​ 再次查看

    ​ hadoop fs -ls /user/hive/warehouse/myhive.db/techer(数据依然存在)

    内部表

    ​ create table student(t_id string,t_name string) row format delimited fields terminated by ‘\t’;

    ​ 加载数据

    ​ load data local inpath ‘/export/servers/hivedatas/student .csv’ into table student;

    ​ 在hdfs查看表中的数据

    ​ hadoop fs -ls /user/hive/warehouse/myhive.db/student

    ​ 在hive中查询

    ​ select * from student

    ​ 删除数据表techer

    ​ drop table student;

    ​ 再次查看

    ​ hadoop fs -ls /user/hive/warehouse/myhive.db/student(数据不存在)

    分区表

    ​ 企业常见的分区规则:按天进行分区(一天一个分区)

    ​ 创建分区表的语句

    ​ create table score(s_id string,c_id string,s_score int) partitioned by (month string) row format delimited fieldsterminated by ‘\t’;

    ​ create table score2 (s_id string,c_id string,s_score int) partitioned by (year string,month string,day string) row formatdelimited fields terminated by ‘\t’;

    ​ 数据加载

    load data local inpath ‘/opt/hive/score.csv’ into table score partition (month=‘201806’);

    load data local inpath ‘/opt/hive/score.csv’ into table score2 partition(year=‘2018’,month=‘06’,day=‘02’);

    特别强调:

    分区字段绝对不能出现在数据表以有的字段中。

    ​ 作用:

    ​ 将数据按区域划分开,查询时不用扫描无关的数据,加快查询速度。

    分桶表

    ​ 是在已有的表结构之上新添加了特殊的结构

    ​ 开启hive的桶表功能

    set hive.enforce.bucketing=true;

    ​ 设置桶(reduce)的个数

    set mapreduce.job.reduces=3;

    ​ 建分桶表

    ​ create table course (c_id string,c_name string,t_id string) clustered by(c_id) into 3 buckets row format delimited fields terminated by ‘\t’;

    ​ 创建基本表

    ​ create table course_common (c_id string,c_name string,t_id string) row format delimited fields terminated by ‘\t’;

    ​ 基本表添加数据

    ​ load data local inpath ‘/export/servers/hivedatas/course.csv’ into table course_common;

    ​ 在基本表中查询数据插入到分桶表

    insert overwrite table course select * from course_common cluster by(c_id);

    ​ 确认分桶内的数据

    ​ [root@node01 hive]# hadoop fs -cat /user/hive/warehouse/course/000000_0
    ​ 03 英语 03
    ​ [root@node01 hive]# hadoop fs -cat /user/hive/warehouse/course/000001_0
    ​ 01 语文 02
    ​ [root@node01 hive]# hadoop fs -cat /user/hive/warehouse/course/000002_0
    ​ 02 数学 01

    特别强调:

    分桶字段必须是表中的字段。

    分桶逻辑:

    对分桶字段求哈希值,用哈希值与分桶的数量取余,余几,这个数据就放在那个桶内。

    展开全文
  • Hive学习3:Hive三种建表语句详解

    万次阅读 多人点赞 2017-10-29 11:29:47
    Hive学习3:Hive三种建表语句详解

    注:hive其他语法在hive官网有说明,建议初学者,去官网学习一手的资料,
    官网:https://cwiki.apache.org/confluence/display/Hive/Home#Home-UserDocumentation

    Create Table

    官网说明

    Hive建表方式共有三种:

    • 直接建表法
    • 查询建表法
    • like建表法

    首先看官网介绍
    ’[]’ 表示可选,’|’ 表示二选一

    CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name    -- (Note: TEMPORARY available in Hive 0.14.0 and later)
      [(col_name data_type [COMMENT col_comment], ... [constraint_specification])]
      [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]
      [SKEWED BY (col_name, col_name, ...)                  -- (Note: Available in Hive 0.10.0 and later)]
         ON ((col_value, col_value, ...), (col_value, col_value, ...), ...)
         [STORED AS DIRECTORIES]
      [
       [ROW FORMAT row_format] 
       [STORED AS file_format]
         | STORED BY 'storage.handler.class.name' [WITH SERDEPROPERTIES (...)]  -- (Note: Available in Hive 0.6.0 and later)
      ]
      [LOCATION hdfs_path]
      [TBLPROPERTIES (property_name=property_value, ...)]   -- (Note: Available in Hive 0.6.0 and later)
      
    
    
    [AS select_statement];   -- (Note: Available in Hive 0.5.0 and later; not supported for external tables)
     
    
    
    CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name
      LIKE existing_table_or_view_name
      [LOCATION hdfs_path];
     
    data_type
      : primitive_type
      | array_type
      | map_type
      | struct_type
      | union_type  -- (Note: Available in Hive 0.7.0 and later)
     
    primitive_type
      : TINYINT
      | SMALLINT
      | INT
      | BIGINT
      | BOOLEAN
      | FLOAT
      | DOUBLE
      | DOUBLE PRECISION -- (Note: Available in Hive 2.2.0 and later)
      | STRING
      | BINARY      -- (Note: Available in Hive 0.8.0 and later)
      | TIMESTAMP   -- (Note: Available in Hive 0.8.0 and later)
      | DECIMAL     -- (Note: Available in Hive 0.11.0 and later)
      | DECIMAL(precision, scale)  -- (Note: Available in Hive 0.13.0 and later)
      | DATE        -- (Note: Available in Hive 0.12.0 and later)
      | VARCHAR     -- (Note: Available in Hive 0.12.0 and later)
      | CHAR        -- (Note: Available in Hive 0.13.0 and later)
     
    array_type
      : ARRAY < data_type >
     
    map_type
      : MAP < primitive_type, data_type >
     
    struct_type
      : STRUCT < col_name : data_type [COMMENT col_comment], ...>
     
    union_type
       : UNIONTYPE < data_type, data_type, ... >  -- (Note: Available in Hive 0.7.0 and later)
     
    row_format
      : DELIMITED [FIELDS TERMINATED BY char [ESCAPED BY char]] [COLLECTION ITEMS TERMINATED BY char]
            [MAP KEYS TERMINATED BY char] [LINES TERMINATED BY char]
            [NULL DEFINED AS char]   -- (Note: Available in Hive 0.13 and later)
      | SERDE serde_name [WITH SERDEPROPERTIES (property_name=property_value, property_name=property_value, ...)]
     
    file_format:
      : SEQUENCEFILE
      | TEXTFILE    -- (Default, depending on hive.default.fileformat configuration)
      | RCFILE      -- (Note: Available in Hive 0.6.0 and later)
      | ORC         -- (Note: Available in Hive 0.11.0 and later)
      | PARQUET     -- (Note: Available in Hive 0.13.0 and later)
      | AVRO        -- (Note: Available in Hive 0.14.0 and later)
      | INPUTFORMAT input_format_classname OUTPUTFORMAT output_format_classname
     
    constraint_specification:
      : [, PRIMARY KEY (col_name, ...) DISABLE NOVALIDATE ]
        [, CONSTRAINT constraint_name FOREIGN KEY (col_name, ...) REFERENCES table_name(col_name, ...) DISABLE NOVALIDATE
    

    观察可发现一共有三种建表方式,接下来我们将一一讲解。

    1.直接建表法:

    create table table_name(col_name data_type);
    

    这里我们针对里面的一些不同于关系型数据库的地方进行说明。

    row format

    row_format
      : DELIMITED [FIELDS TERMINATED BY char [ESCAPED BY char]] [COLLECTION ITEMS TERMINATED BY char]
            [MAP KEYS TERMINATED BY char] [LINES TERMINATED BY char]
            [NULL DEFINED AS char]   -- (Note: Available in Hive 0.13 and later)
      | SERDE serde_name [WITH SERDEPROPERTIES (property_name=property_value, property_name=property_value, ...)]
    
    

    Hive将HDFS上的文件映射成表结构,通过分隔符来区分列(比如’,’ ‘;’ or ‘^’ 等),row format就是用于指定序列化和反序列化的规则。
    比如对于以下记录:

    1,xiaoming,book-TV-code,beijing:chaoyang-shagnhai:pudong
    2,lilei,book-code,nanjing:jiangning-taiwan:taibei
    3,lihua,music-book,heilongjiang:haerbin
    

    逗号用于分割列,即FIELDS TERMINATED BY char,分割为如下列 IDnamehobby(该字段是数组形式,通过 ‘-’ 进行分割,即COLLECTION ITEMS TERMINATED BY '-’)、address(该字段是键值对形式map,通过 ‘:’ 分割键值,即 MAP KEYS TERMINATED BY ':');
    LINES TERMINATED BY char用于区分不同条的数据,默认是换行符;

    file format(HDFS文件存放的格式)

    默认TEXTFILE,即文本格式,可以直接打开。

    如下:根据上述文件内容,创建一个表t1

    create table t1(
        id      int
       ,name    string
       ,hobby   array<string>
       ,add     map<String,string>
    )
    row format delimited
    fields terminated by ','
    collection items terminated by '-'
    map keys terminated by ':'
    ;
    

    这里写图片描述
    2. 查看表的描述:desc t1;
    这里写图片描述

    1. 下面插入数据
      注:一般很少用insert (不是insert overwrite)语句,因为就算就算插入一条数据,也会调用MapReduce,这里我们选择Load Data的方式。
    LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 ...)]
    

    创建一个文件粘贴上述记录,并上载即可,如下图:
    这里写图片描述
    然后上载

    load data local inpath '/home/hadoop/Desktop/data' overwrite into table t1;
    

    别忘记写文件名/data,笔者第一次忘记写,把整个Desktop上传了,一查全是null和乱码。。。。
    查看表内容:

    select * from t1;
    

    这里写图片描述

    external

    未被external修饰的是内部表(managed table),被external修饰的为外部表(external table);
    区别:
    内部表数据由Hive自身管理,外部表数据由HDFS管理;
    内部表数据存储的位置是hive.metastore.warehouse.dir(默认:/user/hive/warehouse),外部表数据的存储位置由自己制定;
    删除内部表会直接删除元数据(metadata)及存储数据;删除外部表仅仅会删除元数据,HDFS上的文件并不会被删除;
    对内部表的修改会将修改直接同步给元数据,而对外部表的表结构和分区进行修改,则需要修复(MSCK REPAIR TABLE table_name;)

    创建一个外部表t2

    create external table t2(
        id      int
       ,name    string
       ,hobby   array<string>
       ,add     map<String,string>
    )
    row format delimited
    fields terminated by ','
    collection items terminated by '-'
    map keys terminated by ':'
    location '/user/t2'
    ;
    

    这里写图片描述

    装载数据
    load data local inpath '/home/hadoop/Desktop/data' overwrite into table t2;
    

    这里写图片描述

    查看文件位置

    如下图,我们在NameNode:50070/explorer.html#/user/目录下,可以看到t2文件
    这里写图片描述

    t1在哪呢?在我们之前配置的默认路径里
    这里写图片描述

    同样我们可以通过命令行获得两者的位置信息:

    desc formatted table_name;
    

    这里写图片描述

    这里写图片描述
    注:图中managed table就是内部表,而external table就是外部表。

    分别删除内部表和外部表

    下面分别删除内部表和外部表,查看区别
    这里写图片描述

    观察HDFS上的文件

    发现t1已经不存在了
    这里写图片描述

    但是t2仍然存在
    这里写图片描述
    因而外部表仅仅删除元数据

    重新创建外部表t2
    create external table t2(
        id      int
       ,name    string
       ,hobby   array<string>
       ,add     map<String,string>
    )
    row format delimited
    fields terminated by ','
    collection items terminated by '-'
    map keys terminated by ':'
    location '/user/t2'
    ;
    

    这里写图片描述

    不往里面插入数据,我们select * 看看结果
    这里写图片描述
    可见数据仍然在!!!

    官网说明
    A table created without the EXTERNAL clause is called a managed table because Hive manages its data. 
    Managed and External Tables
    By default Hive creates managed tables, where files, metadata and statistics are managed by internal Hive processes. A managed table is stored under the hive.metastore.warehouse.dir path property, by default in a folder path similar to /apps/hive/warehouse/databasename.db/tablename/. The default location can be overridden by the location property during table creation. If a managed table or partition is dropped, the data and metadata associated with that table or partition are deleted. If the PURGE option is not specified, the data is moved to a trash folder for a defined duration.
    Use managed tables when Hive should manage the lifecycle of the table, or when generating temporary tables.
    An external table describes the metadata / schema on external files. External table files can be accessed and managed by processes outside of Hive. External tables can access data stored in sources such as Azure Storage Volumes (ASV) or remote HDFS locations. If the structure or partitioning of an external table is changed, an MSCK REPAIR TABLE table_name statement can be used to refresh metadata information.
    Use external tables when files are already present or in remote locations, and the files should remain even if the table is dropped.
    Managed or external tables can be identified using the DESCRIBE FORMATTED table_name command, which will display either MANAGED_TABLE or EXTERNAL_TABLE depending on table type.
    Statistics can be managed on internal and external tables and partitions for query optimization. 
    

    2.查询建表法

    通过AS 查询语句完成建表:将子查询的结果存在新表里,有数据
    一般用于中间表

    CREATE TABLE new_key_value_store
       ROW FORMAT SERDE "org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe"
       STORED AS RCFile
       AS
    SELECT (key % 1024) new_key, concat(key, value) key_value_pair
    FROM key_value_store
    SORT BY new_key, key_value_pair;
    

    根据例子我们建一张表:t3

    create table t3 as
    select
        id
       ,name
    from t2
    ;
    

    会执行MapReduce过程。
    查看表结构及内容,发现是有数据的,并且由于没有指定外部表和location,该表在默认位置,即是内部表。
    这里写图片描述

    3.like建表法

    会创建结构完全相同的表,但是没有数据。
    常用语中间表

    CREATE TABLE empty_key_value_store
    LIKE key_value_store;
    

    例子

    create table t4 like t2;
    

    可以发现,不会执行MapReduce,且表结构和t2完全一样,但是没有数据。
    这里写图片描述

    展开全文
  • 一篇文章让你了解Hive和HBase的区别

    万次阅读 多人点赞 2018-08-07 09:41:38
    相信做大数据开发的朋友对hive和HBase一定不会陌生。 HBASE 想了解更多大数据相关知识可以点击“了解更多” Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql...

    相信做大数据开发的朋友对hive和HBase一定不会陌生。

    一篇文章让你了解Hive和HBase的区别

    HBASE

    想了解更多大数据相关知识可以加V免费领取资料哦:baizhan112

    Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。HBase是Hadoop的数据库,一个分布式、可扩展、大数据的存储。单个的从字面意思上或许很难看出二者的区别,别急,下面我们就对二者做个详细的介绍。

    两者的特点

    Hive帮助熟悉SQL的人运行MapReduce任务。因为它是JDBC兼容的,同时,它也能够和现存的SQL工具整合在一起。运行Hive查询会花费很长时间,因为它会默认遍历表中所有的数据。虽然有这样的缺点,一次遍历的数据量可以通过Hive的分区机制来控制。分区允许在数据集上运行过滤查询,这些数据集存储在不同的文件夹内,查询的时候只遍历指定文件夹(分区)中的数据。这种机制可以用来,例如,只处理在某一个时间范围内的文件,只要这些文件名中包括了时间格式。

    HBase通过存储key/value来工作。它支持四种主要的操作:增加或者更新行,查看一个范围内的cell,获取指定的行,删除指定的行、列或者是列的版本。版本信息用来获取历史数据(每一行的历史数据可以被删除,然后通过Hbase compactions就可以释放出空间)。虽然HBase包括表格,但是schema仅仅被表格和列簇所要求,列不需要schema。Hbase的表格包括增加/计数功能。

    限制

    Hive目前不支持更新操作。另外,由于hive在hadoop上运行批量操作,它需要花费很长的时间,通常是几分钟到几个小时才可以获取到查询的结果。Hive必须提供预先定义好的schema将文件和目录映射到列,并且Hive与ACID不兼容。

    HBase查询是通过特定的语言来编写的,这种语言需要重新学习。类SQL的功能可以通过Apache Phonenix实现,但这是以必须提供schema为代价的。另外,Hbase也并不是兼容所有的ACID特性,虽然它支持某些特性。最后但不是最重要的–为了运行Hbase,Zookeeper是必须的,zookeeper是一个用来进行分布式协调的服务,这些服务包括配置服务,维护元信息和命名空间服务。

    应用场景

    Hive适合用来对一段时间内的数据进行分析查询,例如,用来计算趋势或者网站的日志。Hive不应该用来进行实时的查询。因为它需要很长时间才可以返回结果。

    Hbase非常适合用来进行大数据的实时查询。Facebook用Hbase进行消息和实时的分析。它也可以用来统计Facebook的连接数。

    总结

    Hive和Hbase是两种基于Hadoop的不同技术–Hive是一种类SQL的引擎,并且运行MapReduce任务,Hbase是一种在Hadoop之上的NoSQL 的Key/vale数据库。当然,这两种工具是可以同时使用的。就像用Google来搜索,用FaceBook进行社交一样,Hive可以用来进行统计查询,HBase可以用来进行实时查询,数据也可以从Hive写到Hbase,设置再从Hbase写回Hive。

    展开全文
  • hive -e ,hive -f 用法

    万次阅读 2019-08-16 22:07:11
    -e 'quoted query string': 运行引号内sql查询语句 Sql from command line -f <filename>:从文件中运行sql语句 Sql from file linux环境下: $hive -e "sql语句" >...$hive -f 某个文件(...

    -e 'quoted query string': 运行引号内sql查询语句 Sql from command line

    -f <filename>: 从文件中运行sql语句 Sql from file
     

    linux环境下:

    $hive -e "sql语句"  > 1.log 发现执行后会把结果写入1.log中,包括count(*)的结果

    $hive -f  某个文件(里面是sql语句) > 2.log 发现执行后会把结果写入2.log中,包括count(*)的结果

    $hive -f  某个文件(里面是sql语句)  执行文件里的sql,

    hive -f 的某个文件的扩展名可以是.txt  .sql  .log .hql ,

     

    展开全文
  • 2021年大数据Hive(六):Hive的表生成函数

    万次阅读 多人点赞 2021-06-14 21:19:57
    全网最详细的Hive文章系列,强烈建议收藏加关注! 后面更新文章都会列出历史文章目录,帮助大家回顾知识重点。 系列历史文章 2021年大数据Hive(五):Hive的内置函数(数学、字符串、日期、条件、转换、行转列) ...
  • Hive调优相关总结

    万次阅读 2020-08-11 11:39:56
    我们都知道Hive默认的执行引擎是MR,在没有对Hive执行引擎改造之前(如HDP的TEZ,Hive on Spark项目),我们对Hive的调优依然只能围绕Hive本身支持的如存储格式,压缩,参数,SQL语句等方面的优化做出考虑。...
  • hive 正则表达式详解

    万次阅读 2016-04-09 18:56:22
    hive中的正则表达式还是很强大的。数据工作者平时也离不开正则表达式。对此,特意做了个hive正则表达式的小结。所有代码都经过亲测,正常运行。1.regexp语法: A REGEXP B 操作类型: strings 描述: 功能与RLIKE相同...
  • 总结:HiveHive on Spark和SparkSQL区别

    万次阅读 多人点赞 2017-08-04 22:36:07
    Hive的原理大家可以参考这篇大数据时代的技术hivehive介绍,实际的一些操作可以看这篇笔记:新手的Hive指南,至于还有兴趣看Hive优化方法可以看看我总结的这篇Hive性能优化上的一些总结 Hive on Mapreduce执行...
  • Hive总结篇及Hive的优化

    万次阅读 多人点赞 2018-09-11 10:15:40
    Hive学习也有一段时间了,今天来对Hive进行一个总结,也是对自己的总结,作者还是个小白,有不对的地方请大家指出相互学习,共同进步。今天来谈一谈什么是Hive,产生背景,优势等一系列问题。 什么是Hive 老...
  • JDBC连接impala Java连接Hive JDBC连接Hive

    万次阅读 2018-10-09 20:01:27
    JDBC连接impala Java连接Hive JDBC连接Hive 大家都知道impala是用hive的数据源,但速度要比hive快的多,在秒级即可完成任务查询 package cn.com.tengen.hive; import java.sql.SQLException; import java.sql....
  • Hive的函数

    万次阅读 2016-05-22 15:59:53
    Hive的函数介绍
  • Hive之——Hive SQL优化

    万次阅读 多人点赞 2018-06-08 23:45:15
    一、Hive优化目标在有限的资源下,提高执行效率二、Hive执行HQL——&gt; Job——&gt; Map/Reduce三、执行计划查看执行计划explain [extended] hql四、Hive表优化1、分区静态分区动态分区set hive.exec....
  • Hive简介

    万次阅读 2019-11-21 20:31:23
    文章目录Hive基本概念Hive的意义是什么Hive可以对数据进行存储与计算Hive的特性Hive缺点Hive的内部组成架构数据格式:Hive中没有定义专门的数据格式数据格式部分自定义:hive支持的数据格式Hive元数据Hive安装部署...
  • Hive命令行常用操作(数据库操作,表操作)

    万次阅读 多人点赞 2015-07-14 22:48:01
    数据库操作查看所有的... hive> show databases ; 使用数据库default hive> use default; 查看数据库信息 hive > describe database default; OK db_name comment location owner_name owner_type parameters
  • hive.map.aggr=true; 在map中会做部分聚集操作,效率更高但需要更多的内存。 hive.groupby.skewindata=true: 数据倾斜时负载均衡,当选项设定为true,生成的查询计划会有两个MRJob。第一个MRJob 中, Map的输出...
  • Hive学习(一)Hive安装

    千次阅读 2020-12-24 17:03:45
    目录下载hive上传至虚拟机Hive安装及配置添加环境变量配置hive-env.sh文件配置hive-site.xml文件将mysql驱动移到hive/lib中!!!期间碰到的问题 下载hive hive地址:http://mirror.bit.edu.cn/apache/hive/ 上传至...
  • Hive安装

    千次阅读 2020-08-19 01:53:48
    1、 Hive安装地址 2、 MySql安装 2.1 安装包准备 2.2 安装MySql 2.3 配置MySql 3、Hive安装部署 4 、Hive元数据配置到MySql 4.1 拷贝驱动 4.2 配置Metastore到MySql 5、 启动Hive 5.1 初始化元数据库 5.2...
  • Hive Hive配置详解

    万次阅读 2018-06-25 21:46:40
    整理自 https://www.cnblogs.com/hark0623/p/5650075.html...下面这篇文章带你解密这些配置请跟随以下这些问题来看以下配置:1.hive输出格式的配置项是哪个?2.hive被各种语言调用如何配置?3.hive提交作业是在hiv...
  • Hive面试题(一)

    万次阅读 多人点赞 2019-05-08 10:16:42
    2.谈一下hive的特点,以及hive和RDBMS有什么异同 3.说一下hive中sort by、order by、cluster by、distribute by各代表的意思 4.简要描述数据库中的 null,说出null在hive底层如何存储,并解释select a.* from t1 a...
  • spark整合Hive,idea本地用spark读取Hive中的数据 问题描述: 在hive客户端查看数据库spark是存在的但是用spark连接Hive查不到数据库spark hive> show databases; OK default spark Time taken: 0.11 seconds, ...
  • Hive 配置

    万次阅读 2019-04-30 15:03:00
    我使用的hive版本是1.2.1,以下是默认的配置文件。 hive-env.sh 重命名hive-env.sh.template为hive-env.sh,修改如下信息: # Set HADOOP_HOME to point to a specific hadoop install directory # 设置Hadoop安装...
  • Hive内部表和外部表的区别详解

    万次阅读 多人点赞 2017-10-30 15:37:55
    Hive内部表和外部表的区别
  • hive like与rlike的区别

    万次阅读 2016-03-28 14:55:31
    like与rlike的区别: like不是正则,而是通配符。这个通配符可以看一下SQL的标准,例如%代表任意多个字符。...hive> select "aaaaa" like "%aaa%" from test_struct limit 10; Total jobs = 1 ... OK
  • hive中distinct用法

    万次阅读 多人点赞 2019-01-05 11:48:53
    hive中的distinct是去重的意思,和group by在某些情况下有相同的功能 下面测试下distinct的部分功能,先创建一张测试表 create table test.trip_tmp( id int, user_id int, salesman_id int, huose_id int ); 插入...
  • Presto 配置 Hive & Hive的权限

    千次阅读 2020-06-18 14:19:19
    Hive连接器允许查询存储在Hive数据仓库中的数据。Hive是三个组件的组合: 各种格式的数据文件通常存储在Hadoop分布式文件系统(HDFS)或Amazon S3中。 有关如何将数据文件映射到架构和表的元数据。此元数据存储在...
  • Hive篇.Hive日志配置

    千次阅读 2019-07-21 20:20:48
    Hive运行日志 //修改获得hive-log4j.properties文件 mv hive-log4j.properties.template hive-log4j.properties //修改hive.log.dir的值,默认是在/tmp/${user}/hive.log hive.log.dir=/root/training/apache-hive-...
  • Hive介绍

    千次阅读 2019-11-19 16:18:51
    Hive基本概念 Hive简介 什么是Hive Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能(HQL)。 其本质是将SQL转换为MapReduce的任务进行运算,底层由HDFS来提供...
  • hive-jdbc hive jdbc驱动

    热门讨论 2012-06-06 17:05:52
    hive-jdbc
  • shell命令执行hive脚本(hive交互,hive的shell编程)

    万次阅读 多人点赞 2016-01-19 15:15:42
    Hive执行方式Hive的hql命令执行方式有三种:1、CLI 方式直接执行 2、作为字符串通过shell调用hive –e执行(-S开启静默,去掉”OK”,”Time taken”) 3、作为独立文件,通过shell调用 hive –f或hive –i执行执行 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 298,785
精华内容 119,514
热门标签
关键字:

hive