#java #apache-spark #hadoop-yarn #spark-submit #spark-excel
Вопрос:
При выполнении одного и того же задания в локальной среде (IntelliJ IDEA) количество выходных данных в порядке (например, -55). Но когда вы отправляете его в Yarn с помощью spark-submit, из него получается всего несколько строк (строк -12).
spark2-submit --master yarn --deploy-mode client --num-executors 5 --executor-memory 5G --executor-cores 5 --driver-memory 8G --class com.test.Main --packages com.crealytics:spark-excel_2.11:0.13.1 --driver-class-path /test/ImpalaJDBC41.jar,/test/TCLIServiceClient.jar --jars /test/ImpalaJDBC41.jar,/test/TCLIServiceClient.jar /test/test-1.0-SNAPSHOT.jar
при использовании мастер — пряжи получаются частичные ряды. И
когда используется локально — Способен читать все строки, но получил исключение как — Caused by: java.sql.SQLFeatureNotSupportedException: [Simba][JDBC](10220) Driver not capable.
Похоже, что он не может прочитать весь блок из HDFS при работе в кластере.
Любая помощь будет очень признательна. Спасибо
Комментарии:
1. Пожалуйста, обновите свой вопрос кодом, используемым в
com.test.Main
Ответ №1:
Поскольку вы упоминаете, что вы можете получить все строки в одном исполнителе (работает —master local), это означает, что весь раздел находится в драйвере, с помощью которого вы отправляете задание в spark-submit.
Как только ваш раздел распределится по узлам кластера ( —главная пряжа) Вы теряете много разделов и не можете прочитать весь блок HDFS.
- Посмотрите в свой код, используете ли вы вложенные циклы с условием if, например — while( while() )
Или любой другой цикл с условием if. Как правило, внешний цикл копирует один и тот же раздел на каждом узле, и объединитель объединяет результат в один раздел. Пожалуйста, проверьте это.
- Для исключения JDBC вам необходимо заменить все нулевые значения другими значениями, например, с помощью метода .na().fill() в вашем конечном кадре данных. Поскольку каждая строка столбца внутри файла должна быть больше, чем CHAR > 0 ( нулевые значения имеют нулевую длину, т. е. не поддерживаются при написании JDBC )
Надеется, что это поможет 🙂