Файл в качестве аргумента командной строки для запуска действия в рабочем процессе Oozie

Как передать файл в качестве аргумента командной строки для запуска задания в рабочем процессе Oozie? Мое задание spark ожидает файл в качестве аргумента командной строки, но когда я передаю этот файл в рабочий процесс как /file/location, он не получает этот файл.


person Gopal Kumar    schedule 17.12.2019    source источник
comment
Spark использует библиотеки Hadoop и конфигурацию, переданную Oozie, поэтому файловой системой по умолчанию для Spark будет HDFS, поэтому /file/location неявно означает hdfs:///file/location. Это то, что вы ожидаете?   -  person Samson Scharfrichter    schedule 20.12.2019
comment
Я пробовал с этим. Это не сработало.   -  person Gopal Kumar    schedule 20.12.2019
comment
И в журналах нет ничего, что могло бы объяснить, что пытается сделать Spark, и успешно ли это, или нет, или просто ничего не делает?   -  person Samson Scharfrichter    schedule 20.12.2019
comment
Ты пробовал? Да, я ожидаю того же. Но это не сработало даже с hdfs uri.   -  person Gopal Kumar    schedule 20.12.2019
comment
Он указывает на hdfs:/location/file вместо hdfs://location/file. Я также рассматриваю / как escape-последовательность и пробовал с комбинацией. Ничего не работает, указывает только на hdfs:/ при каждой комбинации.   -  person Gopal Kumar    schedule 20.12.2019
comment
А если код Spark сам добавляет схему hdfs:// явно, если у аргумента нет схемы?   -  person Samson Scharfrichter    schedule 20.12.2019
comment
Вы пытались использовать три косые черты :/// для обозначения файловой системы по умолчанию, абсолютный путь?   -  person Samson Scharfrichter    schedule 20.12.2019


Ответы (1)


У меня есть один обходной путь, если мы поместим файл в пользовательский каталог в общей библиотеке ozzie с несколькими дополнительными изменениями в job.properties.

  • oozie.use.system.libpath=true
  • oozie.action.sharelib.for.spark=spark,пользовательский-каталог
  • oozie.libpath=true

Затем нам нужно обновить общую библиотеку, используя следующую команду:

oozie admin -auth SIMPLE -sharelibupdate

После этого мы можем напрямую подобрать файл, просто используя имя файла, который мы поместили в custom-directory, в рабочем процессе oozie.

person Gopal Kumar    schedule 24.12.2019