一、环境描述
1、Hadoop版本0.20.2,操作系统Linux、JDK 1.6
2、Hive版本0.5.0
二、元数据的存储
1、如果之前进行了建表操作,但是后来对hdfs format后,通过Hive的cli来输入指令show tables查看表,表结构依然存在,但是hdfs文件系统中对应的目录却不存在。那是因为hive的元数据还存在原因导致。元数据默认存放在metastore_db中,删除这个文件夹,再使用show tables命令来查看,表结构自然不存在。由此可以看出metastore_db就是Hive默认存储元数据的地方。
2、对于Hive元数据的存储,默认采用derby。
3、一共有三种元数据的存储方式:
Single User Mode: 此模式连接到一个 In-memory 的数据库 Derby,一般用于 Unit Test。
Multi User Mode:通过网络连接到一个数据库中,是最经常使用到的模式。
Remote Server Mode:用于非 Java 客户端访问元数据库,在服务器端启动一个 MetaStoreServer,客户端利用 Thrift 协议通过MetaStoreServer 访问元数据。
三、Hive Web Interface的启动
1、安装完成Hive 0.5.0之后,如果想使用web操作,可以使用hwi。
2、控制台执行:hive --service hwi > /dev/null 2> /dev/null &
3、web输入http://IP地址:9999/hwi/
4、如果想修改端口和制定的hwi的war包,可以修改一下配置项:
<property>
<name>hive.hwi.war.file</name>
<value>lib/hive-hwi-0.5.0.war</value>
<description>This sets the path to the HWI war file, relative to ${HIVE_HOME}. </description>
</property>
<property>
<name>hive.hwi.listen.port</name>
<value>9999</value>
<description>This is the port the Hive Web Interface will listen on</description>
</property>
四、Hive查询
1、创建表
检查表创建和输入的数据文件是否对应,可以通过做查询来检查。例如:如果建了一张表叫user_info,里面含有3个字段,以\t划分,一行一条数据,脚本如下:
CREATE TABLE USER_INFO(
ACC STRING,
PWD STRING,
AGE STRING
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
LINES TERMINATED BY '\n'
STORED AS TEXTFILE;
输入数据文件格式如下:
dajuezhao 123456 1
huaguniang 654321 0
supermen 78908 0
实例分析:
A、如果输入文有4个字段,但建表却只定义了3个字段,这个时候,如果使用“select * from user_info limit 1”将只会显示前3个字段值。
B、反之,如果建表4个字段,输入文本只有3个字段,那么使用“select * from user_info limit 1”时最后一个字段显示为NULL。
C、如果建表的字段定义类型和文本文件的字段值类型不符合,那么即使是字段的数量对应,使用查询语句,在错误字段也将返回NULL。
总结:
如果在执行“select * from user_info limit 1”之后后控制台显示最后的字段为NULL,至少说明表字段数量多于文本的字段数量或者是最后一个字段的类型对应不上。如果是中间字段出现NULL,说明是字段类型对应不上。(但是如果字段是数字类型,且该字段为空,那么在select的时候返回的也是NULL。这个是需要注意的)
2、如果想把查询的结果集合出到本地,可采用以下格式:
INSERT OVERWRITE LOCAL DIRECTORY '/jz/hive/result' select * from user_info limit 1;
需要注意的是,指定的目录必须是上一级存在的,如上例:/jz/hive是必须存在(hive不会自动创建该目录),result目录会自动创建。
如果result目录下有内容,将会覆盖。
3、如果是返回多个字段结果,可采用以下方式查看:
INSERT OVERWRITE LOCAL DIRECTORY '/jz/hive/result' select acc,pwd from user_info limit 1;
查看结果文件,内容的分割符号为“\001”,输入命令查看“awk -F '\001' '{print $1, $2}' attempt_200806210422_0011_r_000000_0”
分享到:
相关推荐
《Hive metastore 使用达梦数据库存储元数据详解》 在大数据处理领域,Hive作为一个分布式数据仓库工具,被广泛用于存储和管理大规模结构化数据。Hive的元数据是其核心组成部分,它包含了表、分区、列等信息,使得...
* 数据存储:HIVE使用Hadoop分布式文件系统(HDFS)存储数据,而传统数据库使用关系数据库管理系统(RDBMS) * 数据处理:HIVE使用MapReduce处理数据,而传统数据库使用SQL查询 * 扩展性:HIVE具有高可扩展性,可以...
9. **Hive使用注意点** - 确保数据格式与表结构匹配。 - 优化查询,避免全表扫描和过度复杂的子查询。 - 合理使用分区,减少数据处理量。 10. **Hive优化** - 使用桶表(Bucketing)和分桶连接(Bucketed Joins...
当需要使用 Oracle 数据库作为 Hive 的元数据存储时,我们需要对 Hive 进行相应的配置调整。本文档将详细介绍如何配置 Hive 以便能够利用 Oracle 数据库来管理其元数据信息。 #### 二、安装与配置流程 **1. 下载并...
2. 使用Hive命令行模式导出数据:使用`hive -e "select day_id,user,count from user_table where day_id in ('2014-03-06','2014-03-07','2014-03-08','2014-03-09','2014-03-10');"> /home/test/test.dat;`语句...
4. **配置 Spark Session**:在创建 SparkSession 时,可以通过 `enableHiveSupport()` 方法启用对 Hive 的支持,这样可以确保 Spark 能够访问 Hive 元数据和服务,从而能够使用 Hive UDF。 ```java SparkSession ...
当进行JOIN操作时,如果两个表在JOIN键上使用了相同的分桶策略,Hive可以使用更高效的MapReduce算法,提升查询效率。 “各种表创建SQL”这部分将详细讲解CREATE TABLE语句的各种用法,包括创建基本表、分区表、分桶...
首次使用Hive时,需要初始化元数据: ``` sudo -u hive hive --service metastore ``` 六、启动Hive CLI 现在你可以通过Hive命令行接口(CLI)与Hive交互了: ``` hive ``` 在Hive CLI中,你可以创建数据库、表,...
Hive是把一个查询转化成多个MapReduce任务,然后一个接一个执行。执行的中间结果通过对磁盘的读写来同步。然而,Presto没有使用MapReduce,它是通过一个定制的查询和执行引擎来完成的。它的所有的查询处理是在内存中...
标题“使用PHP连接Hive”涉及的技术点主要是如何在PHP编程环境中通过特定的库和工具与Hadoop Hive数据仓库系统进行交互。Hive是Apache Hadoop项目的一部分,它提供了SQL-like查询语言(HQL)来处理存储在Hadoop...
"使用IDEA工具连接CDH集群里面的hive组件" 使用IDEA工具连接CDH集群里面的hive组件是数据开发中的一项重要任务。本文将详细介绍如何使用IDEA工具连接CDH集群里面的hive组件,包括建立java工程项目、添加hive开发的...
3. **libthrift.jar**:Thrift库,Hive使用的RPC框架,用于跨语言通信。 4. **hadoop-common.jar** 和 **hadoop-hdfs.jar**:Hadoop的通用库和HDFS的客户端,用于与HDFS交互。 在DataGrip中配置Hive连接的步骤大致...
Hive是一个基于Hadoop的数据仓库工具,它允许用户使用SQL语言处理存储在HDFS(Hadoop Distributed File System)上的大规模数据集。 描述 "既可以连接没有kerberos的hive也可以连接有kerberos的hive" 暗示了这些...
在大数据处理领域,Apache Hive是一个基于Hadoop的数据仓库工具,它允许用户使用SQL(HQL,Hive Query Language)查询存储在Hadoop集群中的大型数据集。Hive JDBC(Java Database Connectivity)是Hive提供的一种...
使用hive3.1.2和spark3.0.0配置hive on spark的时候,发现官方下载的hive3.1.2和spark3.0.0不兼容,hive3.1.2对应的版本是spark2.3.0,而spark3.0.0对应的hadoop版本是hadoop2.6或hadoop2.7。 所以,如果想要使用高...
实验报告主要涵盖了Hive的安装、配置以及基本操作,包括DDL(Data Definition Language)和DML(Data Manipulation Language)的使用,Hive与MySQL的交互,UDF(User Defined Function)的开发,以及部分调优策略的...
在大数据处理领域,Hive是一个基于Hadoop的数据仓库工具,它可以将结构化的数据文件映射为一张数据库表,并提供SQL查询功能,使得用户可以使用SQL语句来处理存储在Hadoop分布式文件系统(HDFS)上的大数据。...
Hive是Apache Hadoop生态系统中的一个数据仓库工具,...了解并正确使用Hive JDBC驱动,是进行Hive数据操作的重要一环,尤其对于那些希望通过编程方式或数据库管理工具访问Hive数据的开发人员来说,它是必不可少的工具。
在大数据处理领域,Apache Hive是一个基于Hadoop的数据仓库工具,它允许用户使用SQL(HQL,Hive Query Language)查询和管理存储在Hadoop分布式文件系统(HDFS)中的大量结构化数据。本教程将详细介绍如何安装Hive,...