2016-10-05 4 views
-2

Ich versuche, zwei Datenrahmen zu verbinden.Wie füge ich zwei Datenrahmen in Spark Hadoop ohne gemeinsamen Schlüssel zusammen?

Daten: Datenrahmen [_1: Bigint, _2: vector]

Cluster: Datenrahmen [Cluster: Bigint]

result = data.join(broadcast(cluster)) 

Das Merkwürdige ist, dass alle die Ausführenden auf dem Verbindungsschritt versagen .

Ich habe keine Ahnung, was ich tun könnte.

Die Datendatei ist 2,8 GB auf HDFS und die Cluster-Daten nur 5 MB. Die Dateien werden mit Parquet gelesen.

+0

Konnten Sie den genauen Fehler posten, den Sie erhalten? –

+0

Der genaue Fehler war, dass die Executoren versagten. Es konnte kein eindeutiges gefunden werden. Ich kenne die Antwort jetzt :) – blpasd

Antwort

0

Was funktioniert, ist dies:

data = sqlContext.read.parquet(data_path) 
data = data.withColumn("id", monotonicallyIncreasingId()) 

cluster = sqlContext.read.parquet(cluster_path) 
cluster = cluster.withColumn("id", monotonicallyIncreasingId()) 

result = data.join(cluster, on="id") 

die Cluster-Datenrahmen direkt an die Datendatenrahmen Hinzufügen mit:

data.withColumn("cluster", cluster.cluster) 

funktioniert nicht.

data.join(cluster) 

Auch funktioniert nicht, Executoren sind fehlgeschlagen, während genug Speicher.

Keine Ahnung, warum es nicht funktionierte ...

Verwandte Themen