Apache Spark Streaming - проблемы при записи в HBase. Исправляем ошибку "java.io.IOException: java.lang.reflect.InvocationTargetException"
При попытке записи данных в HBase возникла проблема запуска кода через spark-submit. При этом этот же код правильно отрабатывал локально через spark-shell.
Ошибка следующая: "java.io.IOException: java.lang.reflect.InvocationTargetException... Caused by: java.lang.NoClassDefFoundError: org/apache/htrace/Trace"
Проблема в том, что Spark не включает в себя сторонние зависимости. Тоесть по умолчанию он не знает о местоположении jars архивов для драйвера HBase. Интерестно то что Spark включает в себя все необходимые зависимости для работы с Hive и для работы с этой БД. ничего подключать дополнительно не нужно.
Для решения этой несправедливости необходимо добавить в classpath путь к jar-архиву драйвера к HBase. Вот как это должно выглядеть:
defaults.conf нужно добавить следующую строку:
Для этого необходимо:
Class not found running Spark sample hbase
Ошибка следующая: "java.io.IOException: java.lang.reflect.InvocationTargetException... Caused by: java.lang.NoClassDefFoundError: org/apache/htrace/Trace"
Проблема в том, что Spark не включает в себя сторонние зависимости. Тоесть по умолчанию он не знает о местоположении jars архивов для драйвера HBase. Интерестно то что Spark включает в себя все необходимые зависимости для работы с Hive и для работы с этой БД. ничего подключать дополнительно не нужно.
Для решения этой несправедливости необходимо добавить в classpath путь к jar-архиву драйвера к HBase. Вот как это должно выглядеть:
spark-submit --master yarn-cluster --driver-class-path /etc/hbase/conf:/opt/cloudera/parcels/CDH/lib/hbase/lib/htrace-core-3.1.0-incubating.jar ...
Есть также возможность добавить путь к Jar архиву в конфиг Spark-a. Для этого в файл /etc/spark/conf/spark-spark.executor.extraClassPath=/opt/cloudera/parcels/CDH/lib/hbase/lib/htrace-core-3.1.0-incubating.jar
Также можно добавить эту строку с админки СМ(У меня этот вариант не заработал).Для этого необходимо:
- Зайти в админку СM
- Перейти на страницу Spark-a
- Перейти на страницу настроек
- Написать "gateway" в поиске
- В пункте "Spark Client Advanced Configuration Snippet (Safety Valve) for spark-conf/spark-defaults.conf" добавить строку: spark.executor.extraClassPath=/opt/cloudera/parcels/CDH/lib/hbase/lib/htrace-core-3.1.0-incubating.jar
- Сохранить
- Задеплоить изменения настроек
Class not found running Spark sample hbase
Коментарі
Дописати коментар