apache-spark
¿Cómo hacer una pregunta relacionada con Apache Spark?
Buscar..
Introducción
El objetivo de este tema es documentar las mejores prácticas al hacer preguntas relacionadas con Apache Spark.
Detalles del entorno:
Cuando haga preguntas relacionadas con Apache Spark, incluya la siguiente información
- Versión de Apache Spark utilizada por el cliente y la implementación de Spark, si corresponde. Para preguntas relacionadas con la API, las principales (1.6, 2.0, 2.1, etc.) son generalmente suficientes, para preguntas relacionadas con posibles errores, siempre use la información de la versión completa.
- Versión de Scala utilizada para construir binarios de Spark.
- Versión JDK (versión
java -version
). - Si utiliza el idioma invitado (Python, R), brinde información sobre la versión del idioma. En Python, utilice las etiquetas: python-2.x , python-3.xo más específicas para distinguir entre las variantes de idioma.
- Cree la definición (
build.sbt
,pom.xml
) si corresponde o versiones de dependencia externas (Python, R) cuando corresponda. - Administrador de clústeres (
local[n]
, Spark standalone, Yarn, Mesos), modo (client
,cluster
) y otras opciones de envío, si corresponde.
Ejemplo de datos y código
Ejemplo de datos
Intente proporcionar un mínimo de datos de entrada de ejemplo en un formato que puedan ser utilizados directamente por las respuestas sin un análisis tedioso y lento, por ejemplo, un archivo de entrada o una colección local con todo el código necesario para crear estructuras de datos distribuidas.
Cuando sea aplicable siempre incluya información de tipo:
- En la API basada en RDD use anotaciones de tipo cuando sea necesario.
- En la API basada en DataFrame, proporcione información de esquema como un tipo de
StrucType
o salida deDataset.printSchema
.
La salida de Dataset.show
o print
puede verse bien pero no nos dice nada sobre los tipos subyacentes.
Si un problema en particular ocurre solo a escala, use generadores de datos aleatorios (Spark proporciona algunas utilidades útiles en org.apache.spark.mllib.random.RandomRDDs
y org.apache.spark.graphx.util.GraphGenerators
Código
Por favor, use anotaciones de tipo cuando sea posible. Si bien su compilador puede realizar un seguimiento de los tipos fácilmente, no es tan fácil para los simples mortales. Por ejemplo:
val lines: RDD[String] = rdd.map(someFunction)
o
def f(x: String): Int = ???
Son mejor que:
val lines = rdd.map(someFunction)
y
def f(x: String) = ???
respectivamente.
Informacion diagnostica
Preguntas de depuración.
Cuando la pregunta está relacionada con la depuración de una excepción específica, proporcione siempre un rastreo relevante. Si bien es recomendable eliminar las salidas duplicadas (de diferentes ejecutores o intentos), no corte las trazas de retorno a una sola línea o clase de excepción.
Preguntas de rendimiento.
Dependiendo del contexto, trate de proporcionar detalles como:
-
RDD.debugString
/Dataset.explain
. - Salida de Spark UI con diagrama DAG si es aplicable en un caso particular.
- Mensajes de registro relevantes.
- Información de diagnóstico recogida por herramientas externas (Ganglia, VisualVM).
Antes de preguntar
- Búsqueda de desbordamiento de pila para preguntas duplicadas. Hay una clase común de problemas que ya han sido ampliamente documentados.
- Leer ¿Cómo hago una buena pregunta? .
- Leer ¿Qué temas puedo preguntar aquí?
- Recursos de la comunidad de Apache Spark