我在amazons3中有一个文本文件,我想在hiveudf中读取该文件的内容。
尝试了以下代码,但不起作用。
自定义项代码:
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;
有什么帮助吗?
1条答案
按热度按时间5ssjco0h1#
找到了一个解决方案,下面是我的示例程序。
将以下依赖项添加到pom.xml
udf java程序:
配置单元查询: