apache-spark
Как задать вопрос, связанный с Apache Spark?
Поиск…
Вступление
Цель этой темы заключается в том, чтобы документировать лучшие практики при задании вопросов, связанных с Apache Spark.
Информация об окружающей среде:
При задании вопросов, связанных с Apache Spark, пожалуйста, укажите следующую информацию
- Версия Apache Spark, используемая клиентом и развертывание Spark, если это применимо. Для вопросов, связанных с API, основные (1.6, 2.0, 2.1 и т. Д.), Как правило, достаточны, поскольку вопросы, касающиеся возможных ошибок, всегда используют полную информацию о версии.
- Версия Scala используется для создания двоичных файлов Spark.
- Версия JDK (
java -version
). - Если вы используете гостевой язык (Python, R), пожалуйста, предоставьте информацию о языковой версии. В Python используйте теги: python-2.x , python-3.x или более конкретные, чтобы различать языковые варианты.
- Построить определение (
build.sbt
,pom.xml
), если это применимо, или внешние версии зависимостей (Python, R), когда это применимо. - Менеджер кластеров (
local[n]
, Spark standalone, Yarn, Mesos), режим (client
,cluster
) и другие параметры отправки, если это применимо.
Примеры данных и кода
Примеры данных
Попробуйте предоставить минимальные примерные входные данные в формате, который может быть непосредственно использован ответами без утомительного и трудоемкого разбора, например, входного файла или локальной коллекции со всем кодом, необходимым для создания распределенных структур данных.
При необходимости всегда включайте информацию о типе:
- В API на основе RDD используйте аннотации типа типа, когда это необходимо.
- В API, основанный на DataFrame, предоставляется информация о схеме как
StrucType
или вывод изDataset.printSchema
.
Результат из Dataset.show
или print
может выглядеть хорошо, но не говорит нам ничего о базовых типах.
Если конкретная проблема возникает только в масштабе, используйте генераторы случайных данных (Spark предоставляет некоторые полезные утилиты в org.apache.spark.mllib.random.RandomRDDs
и org.apache.spark.graphx.util.GraphGenerators
Код
Пожалуйста, используйте аннотации типов, когда это возможно. Хотя ваш компилятор может легко отслеживать типы, это не так просто для простых смертных. Например:
val lines: RDD[String] = rdd.map(someFunction)
или же
def f(x: String): Int = ???
лучше, чем:
val lines = rdd.map(someFunction)
а также
def f(x: String) = ???
соответственно.
Диагностическая информация
Отладка вопросов.
Когда вопрос связан с отладкой конкретного исключения, всегда предоставляйте соответствующую трассировку. Хотя рекомендуется удалять дублированные выходы (от разных исполнителей или попыток), не вырезать трассировки только для одной строки или класса исключения.
Вопросы производительности.
В зависимости от контекста попробуйте предоставить такие детали, как:
-
RDD.debugString
/Dataset.explain
. - Вывод из Spark UI с диаграммой DAG, если применимо в конкретном случае.
- Соответствующие сообщения журнала.
- Диагностическая информация, собранная внешними инструментами (Ganglia, VisualVM).
Прежде чем спросить
- Поиск переполнения стека для дублирования вопросов. Существует общий класс проблем, которые уже были задокументированы.
- Читайте, как я могу задать хороший вопрос? ,
- Прочитайте, какие темы можно задать здесь?
- Ресурсы сообщества Apache Spark