大数据 Hive 笔记大全 收藏+转发+关注

Apache Hive

 

大数据 Hive 笔记大全 收藏+转发+关注

 

 

一、概述

数据仓库:英文名称为Data Warehouse,可简写为DW或DWH。数据仓库,是为企业所有级别的决策制定过程,提供所有类型数据支持的战略集合。它是单个数据存储,出于分析性报告和决策支持目的而创建。 为需要业务智能的企业,提供指导业务流程改进、监视时间、成本、质量以及控制。

 

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

Hive是建立在 Hadoop 上的数据仓库基础构架。它提供了一系列的工具,可以用来进行数据提取转化加载(ETL),这是一种可以存储、查询和分析存储在 Hadoop 中的大规模数据的机制。Hive定义了简单的类 SQL查询语言,称为 HQL,它允许熟悉 SQL 的用户查询数据。同时,这个语言也允许熟悉MapReduce 开发者的开发自定义的 mapper 和 reducer 来处理内建的 mapper 和 reducer 无法完成的复杂的分析工作。Hive 没有专门的数据格式。 Hive 可以很好的工作在 Thrift 之上,控制分隔符,也允许用户指定数据格式。

Note

ETL:大数据中的一个专业术语, E: Extract(抽取) T:Transfer(转换) L:Load(加载)

ETL指的是从数据源到数据仓库的处理过程, E:将数据源中的数据按照一些规则提取出来关键某些数据,T:将数据做一些简单格式转换,存放在数据仓库的临时表中,L:将临时表中的数据按照业务需求装载到数据仓库的业务表中;

适用场景

Hive 构建在基于静态批处理的Hadoop 之上,Hadoop 通常都有较高的延迟并且在作业提交和调度的时候需要大量的开销。因此,Hive 并不能够在大规模数据集上实现低延迟快速的查询,例如,Hive 在几百MB 的数据集上执行查询一般有分钟级的时间延迟。因此,Hive 并不适合那些需要低延迟的应用,例如,联机事务处理(OLTP)。Hive 查询操作过程严格遵守Hadoop MapReduce 的作业执行模型,Hive将用户的HiveQL 语句通过解释器转换为MapReduce 作业提交到Hadoop 集群上,Hadoop 监控作业执行过程,然后返回作业执行结果给用户。Hive并非为联机事务处理而设计,Hive并不提供实时的查询和基于行级的数据更新操作。Hive的最佳使用场合是大数据集的批处理作业,例如,网络日志分析。

特点

Hive 是一种底层封装了Hadoop 的数据仓库处理工具,使用类SQL 的HiveQL 语言实现数据查询,所有Hive 的数据都存储在Hadoop 兼容的文件系统例如(HDFS) Hive 在加载数据过程中不会对数据进行任何的修改,只是将数据移动到HDFS 中Hive 设定的目录下,因此,Hive 不支持对数据的改写和添加,所有的数据都是在加载的时候确定的。

  • 支持索引,加快数据查询
  • 不同的存储类型,例如,纯文本文件、HBase 中的文件。
  • 将元数据保存在关系数据库中,大大减少了在查询过程中执行语义检查的时间。
  • 可以直接使用存储在Hadoop 文件系统中的数据。
  • 内置大量用户函数UDF 来操作时间、字符串和其他的数据挖掘工具,支持用户扩展UDF 函数来完成内置函数无法实现的操作。
  • 类SQL 的查询方式,将SQL 查询转换为MapReduce 的job 在Hadoop集群上执行。

数据类型

首先Hive没有专门的数据存储格式,也没有为数据建立索引,用户可以非常自由的组织 Hive 中的表,只需要在创建表的时候告诉 Hive 数据中的列分隔符和行分隔符,Hive 就可以解析数据。其次Hive 中所有的数据都存储在 HDFS 中,Hive 中包含以下数据模型:表(Table,也称为内部表),外部表(External Table),分区(Partition),分桶表(Bucket)

 

二、环境搭建

准备工作

  • MySQL DB(Hive使用关系型数据库 存放元数据,减少语义检查查询,需要开启远程访问支持)则使用windows的mysql数据库服务 (省略)mysql –u root –proot
    use mysql;
    update user set host = '%' where host = 'localhost'
    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
    FLUSH PRIVILEGES;
    exit;
  • Hadoop(HDFS & Yarn集群)服务健康[root@HadoopNode00 ~]# start-dfs.sh
    Starting namenodes on [HadoopNode00]
    HadoopNode00: starting namenode, logging to /home/hadoop/hadoop-2.6.0/logs/hadoop-root-namenode-HadoopNode00.out
    localhost: starting datanode, logging to /home/hadoop/hadoop-2.6.0/logs/hadoop-root-datanode-HadoopNode00.out
    Starting secondary namenodes [0.0.0.0]
    0.0.0.0: starting secondarynamenode, logging to /home/hadoop/hadoop-2.6.0/logs/hadoop-root-secondarynamenode-HadoopNode00.out
    [root@HadoopNode00 ~]#
    [root@HadoopNode00 ~]#
    [root@HadoopNode00 ~]# start-yarn.sh
    starting yarn daemons
    starting resourcemanager, logging to /home/hadoop/hadoop-2.6.0/logs/yarn-root-resourcemanager-HadoopNode00.out
    localhost: starting nodemanager, logging to /home/hadoop/hadoop-2.6.0/logs/yarn-root-nodemanager-HadoopNode00.out
    [root@HadoopNode00 ~]# jps
    1858 DataNode
    1765 NameNode
    2618 Jps
    2204 ResourceManager
    2046 SecondaryNameNode
    2302 NodeManager
  • JDK8.0 以上

安装

上传安装包

解压缩安装

[root@HadoopNode00 ~]# tar -zxf apache-hive-1.2.1-bin.tar.gz -C /usr

配置

新建hive-site.xml

[root@HadoopNode00 conf]# vi hive-site.xml<?xml-stylesheet type="text/xsl" href="configuration.xsl"?><configuration>    <property>        <name>javax.jdo.option.ConnectionURL</name>        <value>jdbc:mysql://192.168.197.1:3306/hive</value>    </property>    <property>        <name>javax.jdo.option.ConnectionDriverName</name>        <value>com.mysql.jdbc.Driver</value>    </property>    <property>        <name>javax.jdo.option.ConnectionUserName</name>        <value>root</value>    </property>     <property>        <name>javax.jdo.option.ConnectionPassword</name>        <value>1234</value>     </property></configuration>

注意:

hive数据库的编码格式需要定义为拉丁

添加MySQL驱动jar包

注意版本匹配

[root@HadoopNode00 apache-hive-1.2.1-bin]# mv /root/mysql-connector-java-5.1.6.jar /usr/apache-hive-1.2.1-bin/lib/

替换Hadoop jline的低版本jar包

[root@HadoopNode00 ~]# cp /usr/apache-hive-1.2.1-bin/lib/jline-2.12.jar /home/hadoop/hadoop-2.6.0/share/hadoop/yarn/lib/[root@HadoopNode00 ~]# rm -rf /home/hadoop/hadoop-2.6.0/share/hadoop/yarn/lib/jline-0.9.94.jar

 

启动Hive服务

单用户访问

在一个服务窗口,同时启动Hive Server和Hive Client; 只能允许当前的Hive Client操作Hive Server

[root@HadoopNode00 ~]# cd /usr/apache-hive-1.2.1-bin/[root@HadoopNode00 apache-hive-1.2.1-bin]# bin/hiveLogging initialized using configuration in jar:file:/usr/apache-hive-1.2.1-bin/lib/hive-common-1.2.1.jar!/hive-log4j.propertieshive> show databases;OKdefaultTime taken: 0.669 seconds, Fetched: 1 row(s)hive> use default;OKTime taken: 0.028 secondshive> show tables;OKTime taken: 0.024 seconds

多用户访问

首先启动HiveServer,可以在另外窗口启动多个Hive Client操作

[root@HadoopNode00 apache-hive-1.2.1-bin]# bin/hiveserver2​[root@HadoopNode00 apache-hive-1.2.1-bin]# bin/beeline -u jdbc:hive2://localhost:10000Connecting to jdbc:hive2://localhost:10000Connected to: Apache Hive (version 1.2.1)Driver: Hive JDBC (version 1.2.1)Transaction isolation: TRANSACTION_REPEATABLE_READBeeline version 1.2.1 by Apache Hive0: jdbc:hive2://localhost:10000> show databases;+----------------+--+| database_name  |+----------------+--+| default     |+----------------+--+1 row selected (1.07 seconds)0: jdbc:hive2://localhost:10000> use default;No rows affected (0.052 seconds)0: jdbc:hive2://localhost:10000> show tables;+-----------+--+| tab_name  |+-----------+--++-----------+--+No rows selected (0.037 seconds)0: jdbc:hive2://localhost:10000>

注意:

启动Hive Server后会在MySQL中创建29张和元数据存储相关的表

Hive会在HDFS中创建数据仓库目录,用以存放数据

 

三、数据库和表相关操作

数据库

创建数据库

完整语法

CREATE (DATABASE|SCHEMA) [IF NOT EXISTS] database_name[COMMENT database_comment][LOCATION hdfs_path][WITH DBPROPERTIES (property_name=property_value, ...)];

如:

第一种写法:hive> create database if not exists baizhi;OKTime taken: 0.159 seconds​自动在hdfs创建数据库的数据存放目录: /user/hive/warehouse/baizhi.db​第二种写法:hive>   > create database test3;OK​第三种完整写法:hive> create database if not exists test2 comment 'test2 database' location '/user/test2' with dbproperties('author'='gaozhy','company'='baizhiedu');OK

删除数据库

完整语法

DROP (DATABASE|SCHEMA) [IF EXISTS] database_name [RESTRICT|CASCADE];

默认是:RESTRICT 不允许删除数据库有表的库

Cascade 删除数据库时级联删除表

如:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实战大数据(hadoop spark flink)pdf是指利用大数据处理技术(如Hadoop、Spark、Flink)进行实际的数据分析和应用开发,并以PDF格式进行文档化。 大数据处理技术的出现,使得企业和机构可以处理和分析海量的数据,从而发掘出更多有价值的信息和洞察。而Hadoop、Spark和Flink作为目前比较流行的大数据处理框架,具有各自的特点和适用场景。 首先,Hadoop是一个基于分布式文件系统的大数据处理框架,能够实现数据的存储和计算的分布式处理。它采用MapReduce计算模型,可以对大规模数据进行批处理,适用于离线的数据分析任务。因此,在实战大数据的PDF中,可以介绍如何使用Hadoop进行大数据的存储和离线计算,以及如何利用Hadoop的生态系统组件如HiveHBase等进行数据处理和查询。 其次,Spark是一个内存计算框架,它具有很强的处理速度和灵活性。Spark提供了一系列的API,可以方便地处理和分析大规模数据,同时支持批处理和实时流处理,适用于交互式和实时的数据分析任务。在实战大数据的PDF中,可以介绍如何使用Spark进行数据的处理和分析,包括数据清洗、特征工程、机器学习等方面的实践。 最后,Flink是一个流式计算框架,它具有低延迟、高吞吐量和状态一致性等特点。Flink支持基于时间的窗口计算、迭代计算和状态管理等功能,适用于复杂的实时数据分析任务。在实战大数据的PDF中,可以介绍如何使用Flink进行实时数据处理和分析,包括窗口计算、流式机器学习等方面的实践。 总之,实战大数据(hadoop spark flink)pdf可以从不同维度和使用场景来介绍大数据处理技术的应用,帮助读者了解和掌握这些技术在实际项目中的使用方法和优势。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值