跨通用 UDF Hive 保存状态

Posted

技术标签:

【中文标题】跨通用 UDF Hive 保存状态【英文标题】:Save State across generic UDF Hive 【发布时间】:2014-10-07 17:23:46 【问题描述】:

我有一个场景,我将逐行传递给 hive UDF,并且需要对每一行执行一些验证。

这些验证是使用一些自定义元数据执行的,我需要从外部资源加载这些元数据。

我的问题是,我能否将此元数据仅在 init 中加载一次并将其应用于所有行。在加载时,每行每次的元数据都会大大降低性能。

【问题讨论】:

元数据有多大? 元数据非常大,可以跨越 GB。因为它们是具有数百万条记录的域查找表。 【参考方案1】:

除非此元数据发生很大变化,否则我认为最好的办法是将元数据保存在 HDFS 中。在构造函数中读取它,然后您不必读取它,除非映射器启动时。

【讨论】:

是的,在 HDFS 中存储是有意义的,而且加载速度也会更快。我们在 sql 表中有数据,并计划通过 UDF 调用存储的过程。我还找到了另一种方法,您可以创建静态变量或单例类也可以完成工作。

以上是关于跨通用 UDF Hive 保存状态的主要内容,如果未能解决你的问题,请参考以下文章

将整行的 Hive UDF 作为输入

Hive UDTF开发指南

更新配置单元 UDF 的 jar

SparkSQL-数据的加载和保存

自定义UDF函数,从hive保存到mongodb

HTTP——httpshttp缓存get与postweb安全跨域