Я пытаюсь запустить UDF в Hive, который в основном должен сканировать внешний файл csv, используя значение из таблицы в качестве другого аргумента. Я использую запрос:
add jar s3://bucket_name/udf/hiveudf.jar;
add FILE hdfs:///myfile/myfile.csv;
CREATE TEMPORARY FUNCTION MyFunc AS '....udf.myUDF';
SELECT mydate, record_id, value, MyFunc('myfile.csv',value) from my_table;
Результаты нестабильны, и в некоторых случаях точно такой же запрос работает нормально, но примерно в 80% случаев он возвращает исключение:
java.io.FileNotFoundException: myfile.csv (No such file or directory)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:146)
at java.io.FileInputStream.<init>(FileInputStream.java:101)
at java.io.FileReader.<init>(FileReader.java:58)
...
Кажется, что файл добавлен в распределенный кеш:
hive> list files;
/mnt/tmp/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_resources/myfile.csv
Я пробовал это с различными выпусками EMR, а также с различными типами экземпляров и не смог найти шаблон или то, что вызывает эту проблему. Любые советы будут высоко оценены.