MAPREDUCE服务 MRS-如何在Hive自定义函数中操作本地文件:回答

时间:2024-07-02 16:39:36

回答

默认情况下,可以在UDF中用文件的相对路径来操作文件,如下示例代码:

public String evaluate(String text) {
  // some logic
  File file = new File("foo.txt");
  // some logic
  // do return here
}

在Hive中使用时,将UDF中用到的文件“foo.txt”上传到HDFS上,如上传到“hdfs://hacluster/tmp/foo.txt”,使用以下语句创建UDF,在UDF中就可以直接操作“foo.txt”文件了:

create function testFunc as 'some.class' using jar 'hdfs://hacluster/somejar.jar', file 'hdfs://hacluster/tmp/foo.txt';

例外情况下,如果“hive.fetch.task.conversion”参数的值为“more”,在UDF中不能再使用相对路径来操作文件,而要使用绝对路径,并且保证所有的HiveServer节点和NodeManager节点上该文件是存在的且omm用户对该文件有相应的权限,才能正常在UDF中操作本地文件。

support.huaweicloud.com/cmpntguide-lts-mrs/mrs_01_1755.html