Моего Pig сценарий прекрасно сами по себе работает, пока я не положил его в рабочем процессе Oozie, где я получаю следующее сообщение об ошибке:Pig, Oozie и HBase - java.io.IOException: Нет FileSystem для схемы: HBase
ERROR 2043: Unexpected error during execution.
org.apache.pig.backend.executionengine.ExecException: ERROR 2043: Unexpected error during execution.
...
Caused by: java.io.IOException: No FileSystem for scheme: hbase
Я успешно зарегистрировал банки HBase и Zookeeper, но получил ту же ошибку.
Я также попытался установить Zookeeper Кворум, добавив изменение этих строк в скрипте Свиньи:
SET hbase.zookeeper.quorum 'vm-myhost-001,vm-myhost-002,vm-myhost-003'
Некоторый поиск в Интернете поручил мне, чтобы добавить это начало моего workflow.xml:
SET mapreduce.fileoutputcommitter.marksuccessfuljobs false
Это решило проблему. Я даже смог удалить регистрацию банок HBase и Zookeeper и кворума Zookeeper.
Теперь после двойной проверки я заметил, что мои рабочие места фактически выполняют свою работу: они хранят результаты в HBase, как ожидалось. Но, Оози утверждает, что произошел сбой, когда он этого не сделал.
Я не думаю, что установка mapreduce.fileoutputcommitter.marksuccessfuljobs
на false
представляет собой решение.
Есть ли другие решения?
У меня была такая же проблема, когда я писал в Кассандру. Проблема в том, что Оози по умолчанию пытается создать файл _SUCCESS после завершения задания. Поэтому, когда вы отключите это, работа будет работать, но если что-то впоследствии будет полагаться на этот файл _SUCCESS, который будет создан, Oozie пометит работу как потерпевшую неудачу. В моем случае я убедился, что письмо Кассандре изолировано в своем собственном рабочем процессе. Не знаю, как это происходит с HBase ... – LiMuBei