- 浏览: 219477 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
yugouai:
下载不了啊。。。
如何获取hive建表语句 -
help:
[root@hadoop-namenode 1 5 /usr/ ...
Sqoop -
085567:
lvshuding 写道请问,sqoop 安装时不用配置什么吗 ...
Sqoop -
085567:
lvshuding 写道请问,导入数据时,kv1.txt的文件 ...
hive与hbase整合 -
lvshuding:
请问,sqoop 安装时不用配置什么吗?
Sqoop
Hive 是一个很开放的系统,很多内容都支持用户定制,包括:
- 文件格式:Text File,Sequence File
- 内存中的数据格式: Java Integer/String, Hadoop IntWritable/Text
- 用户提供的 map/reduce 脚本:不管什么语言,利用 stdin/stdout 传输数据
- 用户自定义函数: Substr, Trim, 1 – 1
- 用户自定义聚合函数: Sum, Average…… n – 1
File Format
TextFile | SequenceFIle | RCFFile | |
Data type | Text Only | Text/Binary | Text/Binary |
Internal Storage Order | Row-based | Row-based | Column-based |
Compression | File Based | Block Based | Block Based |
Splitable | YES | YES | YES |
Splitable After Compression | No | YES | YES |
CREATE TABLE mylog ( user_id BIGINT, page_url STRING, unix_time INT) STORED AS TEXTFILE;
当用户的数据文件格式不能被当前 Hive 所识别的时候,可以自定义文件格式。可以参考 contrib/src/java/org/apache/hadoop/hive/contrib/fileformat/base64 中的例子。写完自定义的格式后,在创建表的时候指定相应的文件格式就可以:
CREATE TABLE base64_test(col1 STRING, col2 STRING) STORED AS INPUTFORMAT 'org.apache.hadoop.hive.contrib. fileformat.base64.Base64TextInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.contrib. fileformat.base64.Base64TextOutputFormat';
SerDe
SerDe 是 Serialize/Deserilize 的简称,目的是用于序列化和反序列化。序列化的格式包括:
- 分隔符(tab、逗号、CTRL-A)
- Thrift 协议
反序列化(内存内):
- Java Integer/String/ArrayList/HashMap
- Hadoop Writable 类
- 用户自定义类
其中,LazyObject 只有在访问到列的时候才进行反序列化。 BinarySortable:保留了排序的二进制格式。
当存在以下情况时,可以考虑增加新的 SerDe:
- 用户的数据有特殊的序列化格式,当前的 Hive 不支持,而用户又不想在将数据加载至 Hive 前转换数据格式。
- 用户有更有效的序列化磁盘数据的方法。
用户如果想为 Text 数据增加自定义 Serde ,可以参照 contrib/src/java/org/apache/hadoop/hive/contrib/serde2/RegexSerDe.java 中的例子。RegexSerDe 利用用户提供的正则表倒是来反序列化数据,例如:
CREATE TABLE apache_log( host STRING, identity STRING, user STRING, time STRING, request STRING, status STRING, size STRING, referer STRING, agent STRING) ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe' WITH SERDEPROPERTIES ( "input.regex" = "([^ ]*) ([^ ]*) ([^ ]*) (-|\\[[^\\]]*\\]) ([^ \"]*|\"[^\"]*\") (-|[0-9]*) (-|[0-9]*)(?: ([^ \"]*|\"[^\"]*\") ([^ \"]*|\"[^\"]*\"))?", "output.format.string" = "%1$s %2$s %3$s %4$s %5$s %6$s %7$s %8$s %9$s";) STORED AS TEXTFILE;
用户如果想为 Binary 数据增加自定义的 SerDE,可以参考例子:serde/src/java/org/apache/hadoop/hive/serde2/binarysortable,例如:
CREATE TABLE mythrift_table ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.thrift.ThriftSerDe' WITH SERDEPROPERTIES ( "serialization.class" = "com.facebook.serde.tprofiles.full", "serialization.format" = "com.facebook.thrift.protocol.TBinaryProtocol";);
Map/Reduce 脚本(Transform)
用户可以自定义 Hive 使用的 Map/Reduce 脚本,比如:
FROM ( SELECT TRANSFORM(user_id, page_url, unix_time) USING 'page_url_to_id.py' AS (user_id, page_id, unix_time) FROM mylog DISTRIBUTE BY user_id SORT BY user_id, unix_time) mylog2 SELECT TRANSFORM(user_id, page_id, unix_time) USING 'my_python_session_cutter.py' AS (user_id, session_info);
Map/Reduce 脚本通过 stdin/stdout 进行数据的读写,调试信息输出到 stderr。
UDF(User-Defined-Function)
用户可以自定义函数对数据进行处理,例如:
add jar build/ql/test/test-udfs.jar; CREATE TEMPORARY FUNCTION testlength AS 'org.apache.hadoop.hive.ql.udf.UDFTestLength'; SELECT testlength(src.value) FROM src; DROP TEMPORARY FUNCTION testlength;
UDFTestLength.java 为:
package org.apache.hadoop.hive.ql.udf; public class UDFTestLength extends UDF { public Integer evaluate(String s) { if (s == null) { return null; } return s.length(); } }
自定义函数可以重载:
add jar build/contrib/hive_contrib.jar; CREATE TEMPORARY FUNCTION example_add AS 'org.apache.hadoop.hive.contrib.udf.example.UDFExampleAdd'; SELECT example_add(1, 2) FROM src; SELECT example_add(1.1, 2.2) FROM src;
UDFExampleAdd.java:
public class UDFExampleAdd extends UDF { public Integer evaluate(Integer a, Integer b) { if (a = null || b = null) return null; return a + b; } public Double evaluate(Double a, Double b) { if (a = null || b = null) return null; return a + b; } }
%%
在使用 UDF 的时候,会自动进行类型转换,这个 java 或者 C 中的类型转换有些类似,比如:
SELECT example_add(1, 2.1) FROM src;
的结果是 3.1,这是因为 UDF 将类型为 Int 的参数 “1″ 转换为 double。
类型的隐式转换是通过 UDFResolver 来进行控制的,并且可以根据不同的 UDF 进行不同的控制。
UDF 还可以支持变长的参数,例如 UDFExampleAdd.java:
public class UDFExampleAdd extends UDF { public Integer evaluate(Integer... a) { int total = 0; for (int i=0; i<a.length; i++) if (a[i] != null) total += a[i]; return total; } // the same for Double public Double evaluate(Double... a) }
使用例子为:
SELECT example_add(1, 2) FROM src; SELECT example_add(1, 2, 3) FROM src; SELECT example_add(1, 2, 3, 4.1) FROM src;
综上,UDF 具有以下特性:
- 用 java 写 UDF 很容易。
- Hadoop 的 Writables/Text 具有较高性能。
- UDF 可以被重载。
- Hive 支持隐式类型转换。
- UDF 支持变长的参数。
- genericUDF 提供了较好的性能(避免了反射)。
UDAF(User-Defined Aggregation Funcation)
例子:
SELECT page_url, count(1), count(DISTINCT user_id) FROM mylog;
UDAFCount.java:
public class UDAFCount extends UDAF { public static class Evaluator implements UDAFEvaluator { private int mCount; public void init() { mcount = 0; } public boolean iterate(Object o) { if (o!=null) mCount++; return true; } public Integer terminatePartial() { return mCount; } public boolean merge(Integer o) { mCount += o; return true; } public Integer terminate() { return mCount; } }
UDAF 总结:
- 编写 UDAF 和 UDF 类似
- UDAF 可以重载
- UDAF 可以返回复杂类
- 在使用 UDAF 的时候可以禁止部分聚合功能
发表评论
-
hive中分组取前N个值的实现
2012-03-28 15:49 8208需求:假设有一个学生各门课的成绩的表单,应用hive取出每科成 ... -
hive 备忘录
2011-08-24 14:56 12931 hive结果用gzip压缩输出 在运行查询命令之 ... -
Hive User Defined Functions
2011-07-14 15:22 2262Hive User Defined Functions ... -
hive数组使用
2011-05-27 13:53 4428转:http://blog.sina.com.cn/s/blo ... -
如何获取hive建表语句
2011-03-22 15:35 2322在使用hive进行开发时,我们往往需要获得一个已存在hive表 ... -
写好Hive 程序的五个提示
2011-03-18 16:24 1124转自 :http://www.tbdata.org/archi ... -
hive JDBC 连接
2011-03-18 15:39 1926String driverName = "org.a ... -
hive优化
2011-03-16 15:41 1369Hive 针对不同的查询进行了优化,优化可以通过配置进行控制, ... -
hive综合
2011-03-16 15:40 1555Hive 是什么 在接触一 ... -
hive与hbase整合
2011-03-16 15:12 1654Hive与HBase的整合功能的实现是利用两者本身对外的 ... -
Hive与并行数据仓库的体系结构比较
2011-03-16 14:04 1124转自:http://www.db2china.ne ... -
定时将数据导入到hive中
2011-03-16 13:55 2571应用crontab定时将数据导入到hive中:在调用/bin/ ... -
Hive0.5中Partition简述
2011-03-15 17:00 899转自:http://blog.csdn.net/dajue ... -
Hive SQL语法解读
2011-03-15 15:11 1141一、 创建表 在 ... -
应用mysql保存hive的metastore
2011-03-15 15:09 1341http://www.tech126.com/hive-m ... -
hiveQL 优化
2011-01-13 20:52 18571.当hive执行join内存溢出时,可以修改hive的配置文 ... -
hive深入资料
2011-01-13 20:01 1081hive wiki: http://wiki.apache. ... -
hive 相关
2011-01-10 17:36 1157Hive使用MySQL存放元数据 可以参考一下这篇文章 ... -
基于Hive的日志数据统计实战
2011-01-10 11:47 1675一、Hive简介Hive 是一个基于 hadoop 的开源数 ... -
Hive-0.5中UDF和UDAF简述
2010-08-20 09:33 2154一、UDF 1、背景:Hive是基于Hadoop中的MapR ...
相关推荐
【Hive性能优化及Hive3新特性】 在大数据处理领域,Hive作为一个基于Hadoop的数据仓库工具,常用于大规模数据处理和分析。本章节主要探讨如何优化Hive的性能,以及Hive3引入的新特性。 1. **分区表与分桶表优化** ...
开发者通常需要这些jar包来创建自定义的Hive UDF(用户自定义函数)或UDAF(用户自定义聚合函数)以扩展Hive的功能。这些jar包也用于在MapReduce、Tez或Spark等计算框架上运行Hive查询。 在Hive的不同版本之间,jar...
6. **存储过程(UDF,UDAF,UDTF)**:Hive支持用户自定义函数(UDF),用户定义聚合函数(UDAF)和用户定义表生成函数(UDTF),允许扩展Hive的功能。 7. **连接Hadoop生态系统**:Hive与Hadoop生态系统的其他组件...
华为大数据认证:Hive分布式数据仓库课程目标是让学员掌握Hive应用场景与基本原理、掌握FusionInsight中Hive增强特性、熟悉常用Hive SQL语句。课程目录包括Hive概述、Hive功能与架构、Hive基本操作等。 Hive是大...
在Hive中,UDF(User Defined Functions)是用户自定义函数,允许开发人员扩展Hive的内置功能,以满足特定的数据处理需求。Hive UDF的实现通常涉及到编写Java代码,并将其打包成JAR(Java Archive)文件,然后在Hive...
2. **Hive 2.5.15的关键特性** - **性能提升**:这个版本可能包含了一些性能优化,例如查询执行速度更快,内存管理更有效。 - **SQL兼容性**:Hive 2.5.15继续增强对ANSI SQL标准的支持,使得SQL开发者更容易上手...
标题 "jdbc连接hive的jar包" 涉及的关键知识点主要集中在Hive的JDBC连接以及相关依赖的Java库上。Hive是一个基于Hadoop的数据仓库...同时,了解Hive的元数据存储、分区策略、表类型等特性也对有效使用Hive至关重要。
4. **Hive的ACID特性**:从Hive 3.0版本开始,Hive支持事务(transaction)、原子性(atomicity)、一致性(consistency)和隔离性(isolation)特性,提高了数据处理的可靠性。 5. **Hive与其它大数据组件的协同**...
3. **创建Hive SQL的Antlr4语法规则**:根据Hive SQL的语法特性,编写对应的Antlr4语法规则文件(通常以.g4为扩展名)。 4. **实现解析器**:利用Antlr4生成的解析器类,处理输入的Hive SQL语句,构建并遍历AST,以...
1. **超大数据集的计算与扩展能力**:Hive基于Hadoop的MapReduce框架运行,这意味着它具备处理PB级数据的能力,并且可以水平扩展到数千个节点。 2. **SQL-like查询语言**:HiveQL提供了一种接近于标准SQL的语法,使...
- **弹性扩展性**:基于 Hadoop,Hive 具有很好的水平扩展性,能够处理 PB 级别的数据。 - **数据分区和桶**:通过数据分区和桶,可以提高查询效率,尤其是在处理大数据时。 - **容错性**:Hive 的计算任务是分布式...
3. **可扩展性**:Hive 构建在 Hadoop 上,能够利用 Hadoop 集群的计算和存储能力,轻松扩展到处理PB级别的数据。 4. **容错性**:Hive 的作业都是通过 MapReduce 运行的,因此天然具备了 Hadoop 的容错性,当某个...
Hive 1.2.1 的主要特性包括: 1. **SQL 支持**:HiveQL (Hive Query Language) 是一种类似于 SQL 的查询语言,使熟悉 SQL 的用户能够轻松地对大数据进行操作,无需学习新的编程语言。 2. **元数据管理**:Hive ...
4. **视图与UDF**: 视图简化了复杂查询,而用户自定义函数(UDF)允许用户扩展Hive的功能。 5. **Hive与Hadoop的交互**: 了解如何在Hadoop集群上部署和配置Hive,以及如何通过HDFS交互数据。 **Hive从入门到精通** ...
1. 扩展性:Hive能够轻松扩展到数千个节点,处理PB级别的数据。 2. 易用性:HiveQL使得非程序员可以编写查询,简化了大数据分析的门槛。 3. 灵活性:支持多种数据格式,如文本、Avro、Parquet等,且能处理结构化和半...
综上所述,集成 Flink 1.12.0 和 Hive 3.1.2 需要正确配置依赖和参数,使用 Table API 或 SQL 进行数据操作,并理解如何利用 Flink 的高级特性如 CEP 来扩展你的大数据处理能力。同时,确保你的开发环境和生产环境都...
6. **存储过程**:允许用户定义自定义函数(UDF, User Defined Function)和复杂的操作,扩展 Hive 的功能。 7. **高可用性**:Hive Server 和 Metastore 可以配置为多实例,以提高服务的可靠性。 8. **安全特性**...
- **高度可扩展性**: 用户可以通过自定义数据类型、函数等方式扩展Hive的功能。 - **与Hadoop生态系统的无缝集成**: 支持多种数据源和数据格式,如HDFS、HBase等。 #### 二、Hive的优势 - **高性能处理**: Hive...
Hive的主要优点在于它的易用性和可扩展性,使得非程序员也能方便地进行数据操作。在`apache-hive-2.3.6-bin.tar.gz`中,包含了Hive的源代码、二进制文件、配置文件和相关的文档,这使得用户能够搭建并运行Hive服务。...