- 浏览: 111922 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
土豆蛋儿:
我想读取一个外部文件,以什么方式好了? 文件内容经常编辑
flume 自定义source -
土豆蛋儿:
大神,您好。
flume 自定义source
最近在做关于CDH4.3.0的hive封装,其中遇到了很多问题!其中最困难的是如何在不更改源代码的情况下动态获取jobId!
在项目进行的过程中,我们尝试了很多方式!在尝试的过程中虽然也有很多失败,但对于理解hive的内部机制也更一步的认识,我这里想说的是自定义扩展hook!
在CDH版本的hive中提供了很多hook,俗称钩子函数!这样我们可以通过自定义hook,来对hive进行扩展!这里我就不对hive的执行原理进行赘述了,网上的资料一堆一堆的!中间过程也相当复杂!
这里我大致描述下hive中的一种hook扩展(org.apache.hadoop.hive.ql.hooks.ExecuteWithHookContext),其他的扩展方式基本上都大同小异!
在此之前我们要先大致清除下hive的执行流程,其中的核心类org.apache.hadoop.ql.Driver类是实际执行hive语句的类,其中核心方法之一有run(cmd),这里的cmd实际就是我们要执行的sql语句了!我们根据ExecuteWithHookContext扩展的hook也是在此方法的前后进行执行!这里我介绍的是如何扩展前置钩,也就是在run(cmd)方法执行之前(hive语句会经过编译优化等步骤生成MapReduce任务,这里还未提交MapReduce任务)
下面说说该如何进行扩展(这里用的maven构建工具):
1:自定义一个类实现ExecuteWithHookContext接口
Hclass MyPreHook implements ExecuteHookContext{
public void run(HookContext hookContext) throws Exception{
//这里我们可以做自己想做的事情,比如拿到SessionState、QueryPlan等,获取各种信息
}
}
2:将上面的自定义hook打成jar包,放置到hive的lib目录下
3:关键的一步,修改hive-site.xml文件,增加如下配置
<property>
<name>hive.exec.pre.hooks</name>
<value>自定义hook完整类名</value>
</property>
4:重启hive(各种方式有所不同,我都是采用hiveserver进行操作,所以我是先kill掉hiveserver服务再启动)
5:然后再执行hive语句,我们自定义的hook就能自动执行了!
注:常见问题
(1):hive启动过程中,出现无法找到自定义的hook!这里可以尝试将扩展jar包添加到Hive的classpath下,可以通过修改hive-env.sh文件实现!
在项目进行的过程中,我们尝试了很多方式!在尝试的过程中虽然也有很多失败,但对于理解hive的内部机制也更一步的认识,我这里想说的是自定义扩展hook!
在CDH版本的hive中提供了很多hook,俗称钩子函数!这样我们可以通过自定义hook,来对hive进行扩展!这里我就不对hive的执行原理进行赘述了,网上的资料一堆一堆的!中间过程也相当复杂!
这里我大致描述下hive中的一种hook扩展(org.apache.hadoop.hive.ql.hooks.ExecuteWithHookContext),其他的扩展方式基本上都大同小异!
在此之前我们要先大致清除下hive的执行流程,其中的核心类org.apache.hadoop.ql.Driver类是实际执行hive语句的类,其中核心方法之一有run(cmd),这里的cmd实际就是我们要执行的sql语句了!我们根据ExecuteWithHookContext扩展的hook也是在此方法的前后进行执行!这里我介绍的是如何扩展前置钩,也就是在run(cmd)方法执行之前(hive语句会经过编译优化等步骤生成MapReduce任务,这里还未提交MapReduce任务)
下面说说该如何进行扩展(这里用的maven构建工具):
1:自定义一个类实现ExecuteWithHookContext接口
Hclass MyPreHook implements ExecuteHookContext{
public void run(HookContext hookContext) throws Exception{
//这里我们可以做自己想做的事情,比如拿到SessionState、QueryPlan等,获取各种信息
}
}
2:将上面的自定义hook打成jar包,放置到hive的lib目录下
3:关键的一步,修改hive-site.xml文件,增加如下配置
<property>
<name>hive.exec.pre.hooks</name>
<value>自定义hook完整类名</value>
</property>
4:重启hive(各种方式有所不同,我都是采用hiveserver进行操作,所以我是先kill掉hiveserver服务再启动)
5:然后再执行hive语句,我们自定义的hook就能自动执行了!
注:常见问题
(1):hive启动过程中,出现无法找到自定义的hook!这里可以尝试将扩展jar包添加到Hive的classpath下,可以通过修改hive-env.sh文件实现!
发表评论
-
hive + hbase
2015-01-04 10:42 772环境配置: hadoop-2.0.0-cdh4.3.0 (4 ... -
hive 数据倾斜
2014-08-27 09:03 686链接:http://www.alidata.org/archi ... -
hive 分通总结
2014-08-27 08:42 574总结分析: 1. 定义了桶,但要生成桶的数据,只能是由其他表 ... -
深入了解Hive Index具体实现
2014-08-25 08:51 737索引是标准的数据库技术,hive 0.7版本之后支持索引。hi ... -
explain hive index
2014-08-24 16:44 1145设置索引: 使用聚合索引优化groupby操作 hive> ... -
Hive 中内部表与外部表的区别与创建方法
2014-08-15 17:11 761分类: Hive 2013-12-07 11:56 ... -
hive map和reduce的控制
2014-08-15 16:14 623一、 控制hive任务中的map数: 1. 通 ... -
hive 压缩策略
2014-08-15 15:16 1767Hive使用的是Hadoop的文件 ... -
hive 在mysql中创建备用数据库
2014-08-15 09:21 880修改hive-site.xml <property> ... -
HIVE 窗口及分析函数
2014-08-11 16:21 1187HIVE 窗口及分析函数 使 ... -
hive 内置函数
2014-08-11 09:06 30681.sort_array(): sort_array(arra ... -
hive lateral view
2014-08-09 14:59 2025通过Lateral view可以方便的将UDTF得到的行转列的 ... -
hive数据的导出
2014-07-28 21:53 444在本博客的《Hive几种数据导入方式》文章中,谈到了Hive中 ... -
hive udaf
2014-07-25 16:11 752package com.lwz.udaf; import o ... -
hive自定义InputFormat
2014-07-25 09:13 861自定义分隔符 package com.lwz.inputf; ... -
HiveServer2连接ZooKeeper出现Too many connections问题的解决
2014-07-24 08:49 1764HiveServer2连接ZooKeeper出现Too man ... -
hive 常用命令
2014-07-17 22:22 6931.hive通过外部设置参数传入脚本中: hiv ... -
利用SemanticAnalyzerHook回过滤不加分区条件的Hive查询
2014-07-16 16:43 1466我们Hadoop集群中将近百分之80的作业是通过Hive来提交 ... -
hive 的常用命令
2014-07-16 10:07 0设置、查看hive当前的角色: set sys ... -
hive 授权
2014-07-15 10:51 933Hive授权(Security配置) 博客分类: Hive分 ...
相关推荐
3. **审计日志**:所有通过 Hive Hook 进行的操作都会被记录在审计日志中,这有助于满足法规遵从性和内部审计需求。 4. **数据分类与标签**:Apache Atlas 支持自定义数据分类和标签,Hive Hook 可以自动应用这些...
在Apache Atlas 2.0.0 版本中,Hive Hook 是一个重要的组件,用于集成Apache Atlas 和 Apache Hive,实现对Hive 数据操作的实时监控和元数据管理。 Apache Hive 是一个基于Hadoop 的数据仓库工具,可以将结构化的...
- **配置 hive.conf.validation**:在高级配置 hive-site 中,新增 `hive.conf.validation|hive.hook.open`。 - **自定义 hive-site 配置**:设置 `hive.conf.validation=false` 和 `hive.hook.open=true`。 6. *...
Apache Atlas 的 Hive Hook 是一个关键组件,它允许 Atlas 直接与 Apache Hive 进行交互,实现在 Hive 操作中自动捕获元数据信息,并将其存储到 Atlas 的元数据仓库中。这使得数据治理过程更加自动化,尤其是在大...
与Hive的集成使得Spark SQL可以访问Hive Metastore中的表和分区,进一步增强了Spark的灵活性和可扩展性。 Apache Atlas的Hive Hook是在Hive执行器中插入的一个组件,它能够在Hive操作执行前后捕获元数据变更信息,...
5. **添加 Hive 第三方依赖**:为了使 Hive Hook 正常工作,可能需要在 Hive 的辅助库目录 `$HIVE_HOME/auxlib` 中添加或删除特定的依赖包,如 `elasticsearch-hadoop-hive-7.1.0.jar` 和 `hive-kudu-handler-1.10.0...
标题中的“编译好的Atlas服务和HIVE-hook”指的是Apache Atlas的一个特定版本,即2.1.0,以及与其相关的Hive Hook组件。Apache Atlas是Apache软件基金会的一个开源项目,它是一个元数据管理系统,主要用于大数据环境...
2. **Hive集成**:在Apache Atlas中,Hive Hook是一个关键组件,它允许在Hive操作(如创建表、插入数据、更新数据等)发生时自动捕获元数据并将其记录到Atlas中。这确保了元数据的实时性和完整性,便于数据分析师和...
在实际使用中,你需要将这个Hive Hook部署到你的Hive服务器上,并配置相应的Atlas和Hive连接信息。一旦部署成功,所有的Hive操作都会被自动记录在Apache Atlas中,从而实现全面的数据治理和管理。这对于大数据环境的...
2. **数据血缘追踪**:通过集成 Hive Hook,当用户在 Hive 中执行 DDL 或 DML 操作时,Atlas 可以跟踪数据的来源和去向,这对于理解和分析数据的生命周期至关重要。 3. **分类和标签**:Apache Atlas 允许用户定义...
apache-atlas-2.3.0-hive-hook.tar.gz Apache Atlas 框架是一组可扩展的核心基础治理服务,使企业能够有效且高效地满足 Hadoop 内的合规性要求,并允许与整个企业数据生态系统集成。这将通过使用规范和取证模型、...
hive集成atlas的hive-hook编译包
* 扩展性:HIVE具有高可扩展性,可以处理大规模数据,而传统数据库的扩展性较差 HIVE数据存储 HIVE数据存储主要使用Hadoop分布式文件系统(HDFS),它可以存储大量数据。 HIVE安装部署 HIVE安装部署主要包括以下...
在Hive的核心组件中,元存储(Metastore)扮演着至关重要的角色,它是Hive与数据之间的重要桥梁,存储了所有表和分区的元数据。 元存储是Hive用来存储关于表和分区信息的地方,如表结构、列信息、分区信息等。这些...
Hive Hook 是 Atlas 与 Hive 交互的一种方式,当用户在 Hive 中执行 DDL(数据定义语言)操作时,如创建表、分区,这个钩子会自动将这些变更同步到 Atlas 的元数据中心,保持元数据的实时更新。这增强了对 Hive 数据...
apache-atlas-2.3.0-hbase-hook.tar.gz Apache Atlas 框架是一组可扩展的核心基础治理服务,使企业能够有效且高效地满足 Hadoop 内的合规性要求,并允许与整个企业数据生态系统集成。这将通过使用规范和取证模型、...
大数据分析仓库Hive存储结构扩展的设计和实现.
在Python中编写Hive脚本主要是为了方便地与Hadoop HIVE数据仓库进行交互,这样可以在数据分析和机器学习流程中无缝地集成大数据处理步骤。以下将详细介绍如何在Python环境中执行Hive查询和管理Hive脚本。 1. **直接...