我在 Amazon S3 中有一个文本文件,我想在我的 Hive UDF 中读取文件的内容。
尝试了以下代码,但不起作用。
UDF 代码:
package jbr.hiveudf;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.hive.ql.exec.UDF;
public class ReadS3FileContent extends UDF {
String output = "";
FileSystem _fileSystem;
public String evaluate(String s3File) {
try {
BufferedReader br = new BufferedReader(new InputStreamReader(_fileSystem.open(new Path(s3File.toString()))));
String line;
while ((line = br.readLine()) != null) {
output = output + line;
}
} catch (Exception e) {
System.out.println(e.getMessage());
}
return output;
}
}
蜂巢查询:
ADD JAR s3://ranjith/myhive/lib/MyHiveUDF-0.1.jar;
CREATE TEMPORARY FUNCTION myhiveudf AS 'jbr.hiveudf.ReadS3FileContent';
SELECT myhiveudf('s3n://ranjith/myhive/hive-data.txt') FROM mydb.mytable;
有什么帮助吗?