В приложении Oozie Hive2, я пытаюсь загрузить таблицу hive из файлов .csv, находящихся в сжатом файле .zip. Чтобы читать файлы внутри * .zip через рабочий процесс действий Oozie Hive, действие Hive предоставляет элемент тега «архив». Просто нужно объявить файл Zip в теге элемента «архивного», как показано ниже,oozie - Использование файла архива в действии hive
<archive>${ZipfilePath}#unzipFile</archive>
Ссылки после «#» в элементе «архив» является имя временной папки для чтения распакованных файлов. В .csv файлы внутри .zip может быть считаны со ссылкой на пути «unzipFile /.csv»
Издания является - улого действия не может найти путь, упомянутый в архиве элемента. По умолчанию Hive ищет распакованную папку «HDFS: // nameservice1/пользователь/ульи /» место и ошибки как
"Error: Error while compiling statement: FAILED: SemanticException Line 1:17 Invalid path ''unzipFile/file.csv'': No files matching path hdfs://nameservice1/user/hive/unzipFile/file.csv (state=42000,code=40000"
Но я смог успешно протестировать «архивный» тег с помощью действия оболочки и ' кот»файл в
cat unzipFile/file.csv
О, мой. Инструкция Oozie '' работает как опция '-archives' командной строки Hadoop или команда« добавить архивы ». Он предназначен для отправки ** упакованных библиотек и/или файлов конфигурации **. Не файлы данных. –
Hadoop не поддерживает ZIP для файлов данных, потому что это в первую очередь формат ** archive **, со многими файлами, упакованными в один ZIP. И это разрушает всю парадигму MapReduce. Таким образом, вы должны распаковать свои файлы перед загрузкой в HDFS * (обратите внимание, что вы можете GZip отдельные файлы, расширение '.gz' распознается автоматически) * –
Спасибо за ваш ответ. Просто потому, что oozie Shell action смог прочитать * .csv из архива, я был убежден, что он должен работать так же для Hive. – SaRu