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: , 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 de Dataset.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



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow