19hive的基本知识——好程序

为什么有hive
facebook最初研发来处理海量的社交数据和机器学习。

hive:简化分析:使用sql,开发效率高500行

mr:10000


hive是什么
hive是一个大数据仓库
hive是一个基于hadoop的数据仓库
hive是一个基于hadoop的数据仓库,可以通过类sql语句来对数据进行读、写、管理(元数据管理)

hive的架构(三层)
用户连接客户端:cli、jdbc/odbc、web gui
thrift server:第三方服务
metastore:hive的元数据存储(库名、表名、字段名、数据类型、分区、分桶、创建者、创建时间等)
Driver:解释器,将hql语句生成抽象表达式树。
compiler:编译器,对hql语句进行词法、语法、语言的编译(此时需要联系元数据),编译完成后生成一个有向无环的执行计划。
a->b->c->d->e
optimizer:优化器,将执行计划进行优化,减少不必要的列、使用分区等优化策略
executor:执行器,将优化后的执行计划转换成hadoop的mapreduce框架再提交给yarn集群去运行

hive的特性
通过SQL轻松访问数据的工具,从而支持数据仓库任务,如提取/转换/加载(ETL)、报告和数据分析。
将结构强加于多种数据格式的机制
访问直接存储在Apache HDFS中的文件™ 或在其他数据存储系统(如Apache HBase)中™ 
通过Apache Tez执行查询™,阿帕奇星火™,或MapReduce
带HPL-SQL的过程语言
通过Hive LLAP、Apache YARN和Apache Slider进行亚秒查询检索。


hive和hadoop的关系
hive本身没有存储和计算的功能。hive相当于套在hadoop上的一个壳子。hive是基于hadoop,hive的存储基于hdfs(hbase),hive的计算基于mapreduce。

hive的安装
常用的有3种安装方式(hive会自动检测hadoop的环境变量,如果有就必须启动hadoop)模式主要是元数据的管理
1、本地模式
使用hive自带的默认元数据库derby来进行元数据存储,通常用于测试环境
优点:使用简单,不需要进行配置
缺点:只支持单session

2、远程模式(mysql服务和hive在同一台服务器上)hive是mysql的客户端
通常使用关系型数据库来进行元数据存储,mysql、sql server oracle等待jdbc驱动的数据库
优点:支持多session
缺点:需要配置,还需要安装mysql等数据库
1、解压并配置环境变量
2、配置hive的配置文件
2、1 vi hive-env.sh
JAVA_HOME = 

2、2配置 vi hive-site.xml

<configuration>
<!--配置mysql的连接字符串-->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://192.168.137.91:3306/hive?createDatabaseIfNotExist=true</value>
<description>JDBC connect string for a JDBC metastore</description>
</property>
<!--指定连接mysql的驱动-->
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
<description>Driver class name for a JDBC metastore</description>
</property>
<!--指定连接mysql的用户名-->
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
<description>username to use against metastore database</description>
</property>
<!--指定用户的登录密码-->
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value>
<description>password to use against metastore database</description>
</property>
</configuration>

3、将mysql的驱动包cp到hive的安装目录下的lib下 
4、在mysql上的hive元数据库的编码集一定要使用latin1(用默认的,不能有utf-8)
5、启动
 

3、远程模式(mysql服务和hive不在同一台服务器上)

 

本地模式安装、远程模式安装

1、先将其解压到指定目录下

2、编辑文件,配置环境变量,才可以使hive在任意地方执行命令

hive启动之前,先启动hadoop(因为hive是套在hadoop外面的一个壳子)hive会自动检测hadoop的环境变量,如果有就必须启动hadoop

然后在启动hive

 

远程的,元数据是存储到mysql里面,所以要配置元数据的管理

远程版的 hive-env.sh(这个配不配都没有什么问题)

 

第二个是自定义配置(上面哪里有文件)

 

将mysql的驱动包放到hive的lib下面

 

基本操作

查看状态,下面的状态是active

 

在那个目录下执行hive命令,就在那个目录下生成元数据的文件,其他用户进来是不可以的,因为已经被占用了

同一个用户,在那个目录下执行hive ,就在那个目录下生成这个文件,如果没有就生成,有就加载,如果另外一个用户进来,则不能再加载,因为已经被占用了。是启动目录生成。

 

下面进行测试写法

上传文件

查询

创建一个表

加载数据到t2表里面

 

正确写法

hive使用
hive的默认列分隔符:
\001 \u0001 ctrl + v + ctrl + a

create table if not exists t3(
id int,
name string,
age int
)
row format delimited 
fields terminated by ','
lines terminated by '\n'
;

再加载文件到表2

 

自定义分隔符

将文件加载过来

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Hive是一个基于Hadoop的数据仓库工具,它提供了一种类似SQL的查询语言,用于将结构化数据存储在Hadoop集群上,并进行查询和分析。下面是一些关于Hive基础知识的选择题: 1. Hive的主要特点是什么? a) 提供类似SQL的查询语言 b) 可以在Hadoop集群上进行数据存储和分析 c) 可以处理结构化和半结构化数据 d) 所有选项都正确 答案:d) 所有选项都正确 2. Hive将数据存储在哪里? a) HBase b) Hadoop Distributed File System (HDFS) c) Cassandra d) MySQL 答案:b) Hadoop Distributed File System (HDFS) 3. Hive中的表可以与以下哪种文件格式关联? a) CSV b) JSON c) Parquet d) 所有选项都正确 答案:d) 所有选项都正确 4. Hive使用什么来对数据进行分区和排序? a) HDFS b) Tez c) MapReduce d) Apache Spark 答案:c) MapReduce 5. Hive中的数据查询和分析通过什么来实现? a) Hive Query Language (HQL) b) Structured Query Language (SQL) c) Apache Hive d) Apache Hadoop 答案:a) Hive Query Language (HQL) 总之,Hive是一个基于Hadoop的数据仓库工具,具有类似SQL的查询语言,可以在Hadoop集群上存储和分析结构化和半结构化数据。它使用HDFS来存储数据,可以与多种文件格式关联,并使用MapReduce来进行数据分区和排序。数据查询和分析通过Hive Query Language (HQL)来实现。 ### 回答2: Hive是一款基于Hadoop的数据仓库工具,它提供了方便的数据查询和分析的功能。接下来我将回答一些关于Hive基础知识的选择题。 1. Hive中的表是如何定义的? 答案:C. 使用HiveQL语句创建表。 2. 在Hive中,数据是如何存储的? 答案:B. 在Hadoop的HDFS文件系统中。 3. Hive中的分区是用来做什么的? 答案:A. 对数据进行逻辑上的划分,便于查询优化和数据管理。 4. 在Hive中,可以使用哪种语言进行数据查询? 答案:D. HiveQL。 5. 在Hive中,用来处理复杂逻辑和数据运算的是什么? 答案:B. Hive的UDF(用户定义函数)和UDAF(用户定义聚合函数)。 6. Hive的数据存储格式有哪些? 答案:A. 文本文件(TextFile)、序列文件(SequenceFile)和Parquet等。 7. Hive表中的数据可以通过什么方式进行加载? 答案:C. 使用Hive的LOAD DATA语句。 8. 在Hive中,用来创建管理表结构的是什么? 答案:B. Hive的元数据存储。 9. Hive的优势是什么? 答案:C. 简化了对Hadoop数据的查询和分析。 10. 使用Hive时,可以通过什么方式进行数据的导入和导出? 答案:D. 使用Hive的导入和导出命令。 以上是关于Hive基础知识的一些选择题的答案。Hive是一个功能强大且易于使用的工具,可以帮助用户更好地处理和分析大数据。掌握Hive基础知识对于进行数据仓库的建设和数据分析工作非常重要。 ### 回答3: Hive是一个开源的数据仓库基础架构,运行在Hadoop集群上。以下是关于Hive的基础知识选择题的回答: 1. Hive中的数据存储在哪里? 答:Hive中的数据存储在Hadoop分布式文件系统(HDFS)中。 2. Hive中的数据是如何组织的? 答:Hive中的数据是以表(Tables)的形式进行组织的。 3. Hive中的表的结构是如何定义的? 答:Hive中的表的结构是通过DDL语句来定义的,包括表的名称、列名称、数据类型等信息。 4. Hive中的查询语言是什么? 答:Hive中的查询语言类似于SQL,称为HiveQL或HQL。 5. Hive中的查询语句是如何转换为MapReduce作业的? 答:Hive将查询语句转换为逻辑查询计划,然后将逻辑查询计划转换为物理查询计划,最后将物理查询计划转换为MapReduce作业。 6. Hive中的分区表是什么? 答:Hive中的分区表是按照一个或多个列的值分成不同的目录,并且每个目录下存储相应分区的数据。 7. Hive中的桶是什么? 答:Hive中的桶是将数据分成固定数量的文件的一种方式,目的是提高查询性能。 8. Hive中的内部表和外部表有什么区别? 答:内部表的数据和元数据都由Hive管理,删除内部表时会删除表的数据;而外部表的数据和元数据存储在外部的文件系统中,删除外部表时只会删除元数据。 9. Hive中的UDF是什么? 答:UDF全称为用户定义函数(User-Defined Functions),是由用户自定义的用于特定数据处理操作的函数。 10. Hive中的压缩是如何实现的? 答:Hive中的压缩是通过执行MapReduce作业时将数据进行压缩,以减少数据的存储空间和提高查询性能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值