hadoop - hive 是否为每条记录实例化一个新的 UDF 对象?

标签 hadoop hive

假设我正在构建一个名为 StaticLookupUDF 的 UDF 类,它必须在构建期间从本地文件加载一些静态数据。

在这种情况下,我想确保我不会重复我需要的工作,因为我不想在每次调用 evaluate() 方法时重新加载静态数据。

显然每个映射器都使用它自己的 UDF 实例,但是是否为每个处理的记录生成一个新实例?

例如,映射器将处理 3 行。它是创建单个 StaticLookupUDF 并调用 evaluate() 3 次,还是为每个记录创建一个新的 StaticLookupUDF,并且每个实例仅调用一次 evaluate()?

如果第二个例子是真的,我应该用什么替代方式来构造它?

在文档中的任何地方都找不到这个,我打算查看代码,但我想我会同时问问这里的聪明人。

最佳答案

仍然不能完全确定这一点,但我通过使用静态延迟值根据需要加载数据来解决这个问题。

这样一来,每个映射器就有一个静态值实例。因此,如果您正在读取数据集并且有 6 个 map task ,那么您将读取数据 6 次。不理想,但比每条记录一次要好。

关于hadoop - hive 是否为每条记录实例化一个新的 UDF 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7839881/

相关文章:

hadoop - 将多个.deflate文件转换为ubuntu中的一个gzip文件

hadoop - Fi-Ware 宇宙 : Name node is in safe mode

hadoop - 无法使用大象鸟查询 hive 中的示例AddressBook protobuf数据

hadoop - 当我运行WordCount示例时,输出文件夹不包含任何输出

scala - SparkSQL - 直接读取 Parquet 文件

java - Hadoop与电子商务门户的集成

hadoop - Oozie 和 Hive : FAILED: SemanticException Unable to fetch table <table_name>

hadoop - 使用Kerberos身份验证到dbvisualizer的配置单元连接

scala - Spark SQL配置单元连接错误

performance - 使用Hive/Hadoop连接两个排序的文件