Я поместил свой файл на /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, оно не сработало.
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
String.
Редактировать: Если речь идет о добавлении serde.jar, пожалуйста, перенаправьте меня, чтобы исправить jar для загрузки.
Песочница HDP версии 2.6.5