Ich habe den folgenden Code, der die eindeutigen Telefonnummern erhält, und Union aller Anrufe erstellt.Spark RDD Union OOM-Fehler bei der Verwendung von Einzelmaschine
//Get all the calls for the last 24 hours for each MSISDN in the hour
val sCallsPlaced = (grouped24HourCallsPlaS).join(distinctMSISDNs)
val oCallsPlaced = (grouped24HourCallsPlaO).join(distinctMSISDNs)
val sCallsReceived = grouped24HourCallsRecS.join(distinctMSISDNs)
val oCallsReceived = grouped24HourCallsRecO.join(distinctMSISDNs)
val callsToProcess = sCallsPlaced.union(oCallsPlaced)
.union(sCallsReceived)
.union(oCallsReceived)
Die Funken defaults.conf Datei hat die folgenden:
spark.driver.memory=16g
spark.driver.cores=1
spark.driver.maxResultSize=2g
spark.executor.memory=24g
spark.executor.cores=10
spark.default.parallelism=256
Die Frage ist, in der Lage, Funken 50G von Daten zu verarbeiten, mit einer 256G-Maschine, mit Hadoop-Dienstleistungen (NameNode, Datenknoten, sekundärer Knoten), Garn und HBase, die auf derselben Maschine laufen.
Hbase (HMaster, HQuorumPeer und HRegionServers) benötigen jeweils etwa 20G.
Gibt es auch einen schnelleren Weg als die Verwendung von "Union" in Spark.