我已将文件放在/hadoop/yarn/local/usercache/root/test_abspath
上,并希望使用UDF读取第一行。
当我使用select test('ABCD','ABCD');
运行它时,我可以读取文件,但是当我使用Create table as test_tb select test(name,'ABCD') from another_table
尝试它时,它失败了。在第二种情况下,f1.exist() was true
但是f1.canRead() was false
我尝试使用chmod 777的changin读写许可,但是没有用。
读取文件的Java代码如下:
public class config {
public static final String confFilePath = "/hadoop/yarn/local/usercache/root/test_file
public static void init(){
BufferedReader br;
try {
File f1 = new File(confFilePath);
if (f1.exists())
{ if (f1.canRead()){
br = new BufferedReader( new FileReader( confFilePath ));
String line;
line = br.readLine();
str = line;
logger.info("inside init");
}
else{
str = "can't read";
}
}
如果使用select test('ABCD','ACBD')
,则成功读取test_file的第一行;如果使用Create table as test_tb select test(name,'ABCD') from another_table
,则返回can't read
字符串。
编辑:如果这是关于添加serde.jar的,那么请重新命名我以更正要下载的jar。 HDP沙盒版本2.6.5