Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hadoop 配置单元UDF全局变量_Hadoop_Hive_Hive Udf - Fatal编程技术网

Hadoop 配置单元UDF全局变量

Hadoop 配置单元UDF全局变量,hadoop,hive,hive-udf,Hadoop,Hive,Hive Udf,有人能告诉我在Hive UDF中是否有全局变量的方法吗 我正试图找出下面问题的解决办法。 场景如下。我有三种类型的文件 一个包含4列的文件(假设列名为A、B、C和D) 具有两列(B、D)的文件 具有两列(B、C)的文件 我将把所有三个文件转换成标准格式(文件1格式-4列输出)。 要转换成标准格式,我需要引用文件第一行中的头记录。因此,如果我的输入文件是256MB,并且调用了多个映射程序,是否有任何方法使每个映射程序都可以引用一个全局变量(头信息)。 简而言之,有没有一种方法可以为所有调用my H

有人能告诉我在Hive UDF中是否有全局变量的方法吗

我正试图找出下面问题的解决办法。 场景如下。我有三种类型的文件

  • 一个包含4列的文件(假设列名为A、B、C和D)
  • 具有两列(B、D)的文件
  • 具有两列(B、C)的文件
  • 我将把所有三个文件转换成标准格式(文件1格式-4列输出)。 要转换成标准格式,我需要引用文件第一行中的头记录。因此,如果我的输入文件是256MB,并且调用了多个映射程序,是否有任何方法使每个映射程序都可以引用一个全局变量(头信息)。
    简而言之,有没有一种方法可以为所有调用my Hive UDF的映射器提供一个公共变量


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

    是的,有一种方法可以做到这一点,我自己也做过

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

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

    // assume c = Configuration()
    
    val headerInformationJson = getHeaderInformation(filePath1)
    c.set("headerInfo", headerInformationJson)
    
    然后,在映射器的initialize方法中,您可以读取以下内容:

    val conf = context.getConfiguration()
    val headerInfo = conf.get("headerInfo");
    

    对于配置单元UDF,您可以使用UDF提供的挂钩来执行类似的操作此方法在
    configure()
    中使用了什么?