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;
何か助けはありますか?