
# 如何在Hive自定义函数中操作本地文件
#### 问题
在Hive自定义函数中需要操作本地文件，例如读取文件的内容，需要如何操作？
#### 回答
默认情况下，可以在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中操作本地文件。
