`
ganliang13
  • 浏览: 251890 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Hive SQL使用和数据加载的一点总结

    博客分类:
  • hive
 
阅读更多

Hive 是facebook开源的一个基于hadoop框架的查询工具,也就是说,需要用hive的话,就要先安装hadoop。这次是小结一下最近用hive的心得,经验分享。hadoop和hive,pig,hbase的安装配置以后专门另开个连载说比较好。

 
所以,我假设你已经有hive了。
 
1.字段的数据类型。
hive实际上为了数据挖掘的需要,对hive表的字段设置了数据类型,对于经常where的,还可以设置index。
 
数据类型分以下几种
 
STRING 不定长字符串
TINYINT 3位长整型数
SMALLINT 5位长整型
INT 10位整型
BIGINT 19位整型
FLOAT 浮点数
DOUBLE 双精度
BOOLEAN 布尔型,也就是TRUE和FALSE

不同的整型数有不同的位数限制,这个创建表的时候需要注意一下,别因为位数不够造成数据截取。位数过大,又会造成元数据的空间浪费。

还有三种不常用到的
STRUCTS 结构体
ARRAY 数组
MAP 这个不知道该怎么翻译合适
 
2.创建数据表。
 
hive的数据表分为两种,内部表和外部表。
 
内部表指hive创建并通过load data inpath进数据库的表,这种表可以理解为数据和表结构都保存在一起的数据表。当你通过DROP TABLE table_name 删除元数据中表结构的同时,表中的数据也同样会从hdfs中被删除。
 
外部表指在表结构创建以前,数据已经保存在hdfs中了,通过创建表结构,将数据格式化到表的结构里。当DROP TABLE table_name 的时候,hive仅仅会删除元数据的表结构,而不会删除hdfs上的文件,所以,相比内部表,外部表可以更放心大胆的使用。
 
内部表建表语句:
CREATE TABLE database.table1
(
column1 STRING COMMENT 'comment1',
column2 INT COMMENT 'comment2'
);
外部表创建语句:
 
下面是hdfs中文件不用LZO压缩,纯文本保存时,如何创建外部表:
CREATE EXTERNAL TABLE IF NOT EXISTS database.table1
(
column1 STRING COMMENT 'comment1',
column2 STRING COMMENT 'comment2'
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY "\t"
LOCATION 'hdfs:///data/dw/asf/20120201';
 
下面是,当hdfs中的文件用LZO压缩后,如何创建外部表,当然你需要hadoop-gpl的支持才能以文本形式读取lzo文件。
CREATE EXTERNAL TABLE IF NOT EXISTS database.table1
(
column1 STRING COMMENT 'comment1',
column2 STRING COMMENT 'comment2'
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY "\t"
STORED AS INPUTFORMAT "com.hadoop.mapred.DeprecatedLzoTextInputFormat" OUTPUTFORMAT "org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat"
LOCATION 'hdfs:///data/dw/asf/20120201';
标红部分是十分操蛋的,网上几乎所有涉及该单词的文章基本全是复制粘贴抄的,无一例外,全部写成SORTED,如果你找的hive中文资料不是我这篇,恐怕创建外部表都会报错。
 
3.删除数据表
 
正如我们前面所说,数据表在删除的时候,内部表会连数据一起删除,而外部表只删除表结构,数据还是保留的。这个需要注意一下。
 
4.修改表结构
 
新添加字段
ALTER TABLE table1 ADD COLUMNS
(
column1 string COMMENT 'comment1',
column2 string COMMENT 'comment2'
);
修改表名
ALTER TABLE database.table1 RENAME TO database.table2;
修改数据表,以使用LZO压缩数据。
ALTER TABLE table1
SET FILEFORMAT
INPUTFORMAT "com.hadoop.mapred.DeprecatedLzoTextInputFormat"
OUTPUTFORMAT
"org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat";
用这句话,即便原来是文本数据改成了lzo压缩,也可以在不重新创建表的情况下重新使用了。
 
5.内部表加载数据
 
从本地文件系统中加载数据。
LOAD DATA LOCAL INPATH "/opt/data/1.txt" INTO TABLE table1;
意思是,从本地文件系统/opt/data/1.txt加载到hive的table1中。这时hive会读取该文件,并将内容写到hdfs中table1所在的位置。
 
从HDFS中加载数据
LOAD DATA INPATH "/data/datawash/1.txt" INTO TABLE table1;
意思是从HDFS的/data/datawash/1.txt写入到table1所在目录。
 
关于加载中的OVERWRITE是这样。
LOAD DATA LOCAL INPATH "/opt/data/1.txt" OVERWRITE INTO TABLE table1;
如果加了OVERWRITE,则覆盖原先已经存在的数据,如果你确定原先没有数据,则可以写上。
 
HIVE还包含很多功能,View,index
分享到:
评论

相关推荐

    HiveSQL实战题目.docx

    这个题目要求读者使用 HiveSQL 查询学生表、课程表和成绩表,找到"01"课程比"02"课程成绩高的学生的信息及课程分数。解决方法是使用 JOIN 语句将三个表连接起来,然后使用 WHERE 语句过滤出满足条件的学生信息和课程...

    hive环境搭建和建表加载数据

    标题“Hive环境搭建和建表加载数据”涉及了几个关键的知识点,包括Hive环境的搭建、创建表、加载数据以及执行Hive SQL作业。Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供...

    最强HiveSQL开发指南.pdf

    《最强HiveSQL开发指南》是一本专注于Hive性能调优和实战操作的教程,旨在帮助读者深入理解和熟练运用Hive进行大数据处理。Hive作为Apache Hadoop生态系统中的一个组件,主要用于处理和分析大规模分布式存储的数据。...

    HIVE-SQL操作语句

    通过以上介绍,我们可以看到 Hive 支持多种 SQL 操作,包括创建表、修改表结构、加载数据、查询和插入数据等。这些功能使得 Hive 成为了大数据处理领域中的一个重要工具。掌握这些基本操作有助于更高效地管理和分析...

    深入浅出Hive企业级架构优化、Hive Sql优化、压缩和分布式缓存

    Apache Hive 是一个基于 Hadoop 的数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的 SQL 查询功能,使不熟悉 MapReduce 的开发人员也能用 SQL 语言进行数据查询。Hive 在内部将 SQL 语句转换...

    Hive.sql,hive的元数据

    Hive.sql

    Hive中SQL详解

    Hive中SQL详解 Hive是一个基于Hadoop构建的数据仓库分析系统,它提供了丰富的SQL查询方式来分析存储在Hadoop分布式文件系统中的数据...Hive是一个功能强大且灵活的数据仓库分析系统,广泛应用于大数据处理和分析领域。

    hive搭建及使用入门简介(内含PPT、各种表创建sql及hive搭建使用笔记)

    Hive是大数据处理领域中的一个关键组件,它提供了一个基于Hadoop的数据仓库工具,用于查询和管理大规模数据集。这个资料包将引导你逐步了解Hive的安装配置、基本概念以及SQL操作,非常适合初学者和正在从事Hive相关...

    利用Hive进行复杂用户行为大数据分析及优化案例

    利用Hive进行复杂用户行为大数据分析及优化案例(全套视频+课件+代码+讲义+工具软件),具体内容包括: 01_自动批量加载数据到hive ...16_Hive中使用正则加载数据 17_Hive中使用Python脚本进行预处理

    Hive sql系统学习教程

    2. **数据加载语句**: 数据可以从本地文件系统或HDFS直接导入到Hive表中,支持批量加载和增量加载,使数据管理变得简单。 3. **数据查询语句**: 使用类似SQL的语法进行数据查询,支持SELECT、WHERE、GROUP BY、...

    HiveSQL解析原理.docx

    ### HiveSQL解析原理详解 #### 一、引言 Hive作为一款建立在Hadoop之上的数据仓库系统,被广泛应用于大数据处理场景中。对于众多企业和组织而言,它不仅是存储和管理海量数据的有效手段,同时也是进行数据分析的...

    hive数仓、hive SQL 、 hive自定义函数 、hive参数深入浅出

    Hive是大数据处理领域中的一个关键组件,它作为基于Hadoop的数据仓库工具,为企业提供了对大规模数据集的SQL-like查询和分析能力。本教程将深入探讨Hive数仓的架构与设计,Hive SQL的基本语法及高级特性,以及如何...

    部分普通sql查询在hive中的实现方式

    由于Hive的设计初衷是让用户能够使用类SQL的查询语言“HiveQL”来处理数据,它与传统的SQL数据库存在一定的差异。以下是一些常见的SQL查询在Hive中的实现方式: #### 1. 在查询中不能同时出现多条`COUNT(DISTINCT)`...

    大数据 hive 实战数据

    在实际操作中,我们可能会使用Hive进行ETL(Extract, Transform, Load)过程,从原始数据中抽取、转换并加载到Hive表中。然后通过HQL进行数据探索、统计分析、报表生成等任务。此外,Hive还支持与其他大数据组件如...

    Hive sql优化

    ### Hive SQL优化技巧详解 #### 一、数据倾斜优化 数据倾斜是指在Hive查询过程中,数据不均匀...通过以上方法和技术的应用,可以有效地优化Hive查询性能,减少数据倾斜带来的负面影响,提高大数据处理的速度和效率。

    hive数据加载导出查询

    ### Hive 数据加载与导出详解 #### 创建 Hive 表 在使用 Hive 进行数据分析之前,首先需要创建一张表来存储数据。以下是一段创建分区表的 SQL 语句示例: ```sql CREATE TABLE db_0309.emp ( empno INT, ename ...

    项目实战——Spark将Hive表的数据写入ElasticSearch(Java版本)

    Hive是一个基于Hadoop的数据仓库工具,它允许用户使用SQL语法进行数据查询和分析。在本项目中,我们首先需要从Hive表中提取数据。Hive提供了丰富的接口供外部应用访问,包括Hive JDBC和Hive SerDe(Serializer/...

    Hive SQL性能优化

    Hive SQL的执行流程通常分为Map阶段和Reduce阶段: 1. **Map阶段**: - **表的查找与加载**:从数据源加载数据。 - **条件过滤**:执行WHERE子句中的过滤条件。 - **输出项筛选**:根据SELECT子句确定输出字段。...

    hive 创建自定义函数 和 hive加载说明

    这篇博文主要探讨了如何在Hive中创建自定义函数以及如何加载它们,这对于深化Hive的使用和解决复杂的数据处理问题至关重要。 首先,我们来看一下创建自定义函数的过程。在Hive中,UDF分为三种类型:UDF(User ...

Global site tag (gtag.js) - Google Analytics