Spark Ausnahme beim Konvertieren einer MySQL-Tabelle in Parkett

Ich versuche, eine MySQL-entfernte Tabelle mit spark 1.6.2 in eine Parkettdatei zu konvertieren.

Der Vorgang dauert 10 Minuten und füllt den Speicher. Anschließend werden die folgenden Meldungen ausgegeben:

WARN NettyRpcEndpointRef: Error sending message [message = Heartbeat(driver,[Lscala.Tuple2;@dac44da,BlockManagerId(driver, localhost, 46158))] in 1 attempts
org.apache.spark.rpc.RpcTimeoutException: Futures timed out after [10 seconds]. This timeout is controlled by spark.executor.heartbeatInterval

Am Ende schlägt dieser Fehler fehl:

ERROR ActorSystemImpl: Uncaught fatal error from thread [sparkDriverActorSystem-scheduler-1] shutting down ActorSystem [sparkDriverActorSystem]
java.lang.OutOfMemoryError: GC overhead limit exceeded

Ich führe es mit den folgenden Befehlen in einer Spark-Shell aus:

spark-shell --packages mysql:mysql-connector-java:5.1.26 org.slf4j:slf4j-simple:1.7.21 --driver-memory 12G

val dataframe_mysql = sqlContext.read.format("jdbc").option("url", "jdbc:mysql://.../table").option("driver", "com.mysql.jdbc.Driver").option("dbtable", "...").option("user", "...").option("password", "...").load()

dataframe_mysql.saveAsParquetFile("name.parquet")

Ich habe Grenzen für den maximalen Executor-Speicher auf 12 GB. Gibt es eine Möglichkeit, das Schreiben der Parkettdatei in "kleinen" Blöcken zu erzwingen, um Speicher freizugeben?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage