当前位置: 首页 > 知识库问答 >
问题:

配置单元UDF全局变量

桂丰
2023-03-14
    null

我将把所有三个文件转换成标准格式(文件1格式--一个有4列的输出)。要转换为标准格式,我需要引用文件第一行中的头记录。因此,如果我的输入文件是256MB,并且调用了多个映射器,是否有任何方法使每个映射器可以引用一个全局变量(头信息)。
简而言之,是否有一种方法为所有调用我的配置单元UDF的映射器提供一个公共变量?

注意:UDF将在单个列表上运行,读取完整的行,然后将其写入下一个表HDFS位置。

共有1个答案

濮丰
2023-03-14

是的。有办法做到这一点,我自己也做到了。

最好的方法是在开始map-reduce作业之前通过读取文件查找信息,然后可以为要使用的映射器和reducer设置一个配置值。

例如,在启动main方法中的作业之前,您可以执行以下操作(伪Scala):

// assume c = Configuration()

val headerInformationJson = getHeaderInformation(filePath1)
c.set("headerInfo", headerInformationJson)
val conf = context.getConfiguration()
val headerInfo = conf.get("headerInfo");
 类似资料:
  • 请告诉我如何在udf中使用hive conf变量,以及如何在hive udf中访问hive配置?

  • 添加/home/cloudera/date.jar到类路径添加资源:/home/cloudera/date.jar 请有人帮帮我,因为我是新来蜂巢的。有人能告诉我要遵循的步骤吗

  • 我看到这样一个udf: https://github.com/edwardcapriolo/hive-geoip 如何在Hive中利用udf?我可以自己创建函数名吗?

  • 我在java中开发了一个工作正常的配置单元udf,我的函数返回输入与配置单元表中列之间的最佳匹配,因此它有以下简化的伪代码: 我的问题是,如果这个函数是由Hive调用的,为什么我需要在代码中连接到Hive?我可以使用使用我的功能的用户所连接的当前连接吗?

  • 以太币(Ether) 单位 以太币(Ether) 单位之间的换算就是在数字后边加上 wei、 finney、 szabo 或 ether 来实现的,如果后面没有单位,缺省为 Wei。例如 2 ether == 2000 finney 的逻辑判断值为 true。 时间单位 秒是缺省时间单位,在时间单位之间,数字后面带有 seconds、 minutes、 hours、 days、 weeks 和 y

  • This is a list of variables that are always implicitly assigned to the . This is handy for making global variables or server variables available to all templates without having to manually assign them