Hive: почему CTAS не может прочитать файл, тогда как запрос select может - PullRequest
0 голосов
/ 03 сентября 2018

Я поместил свой файл на /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

...