Sök…


Introduktion

Målet med detta ämne är att dokumentera bästa praxis när du ställer frågor om Apache Spark.

Miljöinformation:

Följ följande information när du ställer frågor om Apache Spark-relaterade frågor

  • Apache Spark-version som används av klienten och Spark-distribution om tillämpligt. För API-relaterade frågor är majoritet (1.6, 2.0, 2.1 etc.) vanligtvis tillräckligt, för frågor om möjliga buggar använder du alltid fullversionsinformation.
  • Scala-version som används för att bygga gnistbinarier.
  • JDK-version ( java -version ).
  • Om du använder gästspråk (Python, R) ska du lämna information om språkversionen. I Python använder du taggar: , eller mer specifika för att skilja mellan språkvarianter.
  • Bygg definition ( build.sbt , pom.xml ) om tillämpligt eller externa beroendeversioner (Python, R) när det är tillämpligt.
  • Cluster manager ( local[n] , gnist fristående, garn, mesos), läge ( client , cluster ) och andra skicka alternativ om tillämpligt.

Exempel på data och kod

Exempel Data

Försök att tillhandahålla ett minimalt exempel på inmatningsdata i ett format som direkt kan användas av svaren utan tråkiga och tidskrävande analysering till exempel inmatningsfil eller lokal insamling med all kod som krävs för att skapa distribuerade datastrukturer.

Om tillämpligt inkludera alltid typinformation:

  • I RDD-baserade API använder du typanteckningar vid behov.
  • I DataFrame-baserad API tillhandahålla schemainformation som en StrucType eller utgång från Dataset.printSchema .

Output från Dataset.show eller print kan se bra ut men berättar ingenting om underliggande typer.

Om speciellt problem endast uppstår i skala, använd slumpmässiga datageneratorer (Spark ger några användbara verktyg i org.apache.spark.mllib.random.RandomRDDs och org.apache.spark.graphx.util.GraphGenerators

Koda

Använd typanteckningar när det är möjligt. Medan din kompilator enkelt kan hålla reda på typerna är det inte så lätt för bara dödliga. Till exempel:

val lines: RDD[String] = rdd.map(someFunction)

eller

def f(x: String): Int = ???

är bättre än:

val lines = rdd.map(someFunction)

och

def f(x: String) = ???

respektive.

Diagnostisk information

Debugging frågor.

När frågan är relaterad till felsökning ska specifikt undantag alltid ge relevant traceback. Även om det är tillrådligt att ta bort duplicerade utgångar (från olika exekutörer eller försök) ska du inte klippa tracebacks till en enda rad eller undantagsklass.

Prestationsfrågor.

Beroende på sammanhanget försöker du ge detaljer som:

  • RDD.debugString / Dataset.explain .
  • Utgång från gnistgränssnitt med DAG-diagram om tillämpligt i särskilt fall.
  • Relevanta loggmeddelanden.
  • Diagnostisk information insamlad av externa verktyg (Ganglia, VisualVM).

Innan du frågar



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow