Wenn die Datei standardmäßig von HDFS geladen wird, erstellt Spark eine Partition pro Block. Aber wie entscheidet Funke über Partitionen, wenn eine Datei aus S3-Bucket geladen wird?Wie viele Partitionen erstellt Spark, wenn eine Datei aus S3-Bucket geladen wird?
4
A
Antwort
0
Siehe den Code org.apache.hadoop.mapred.FileInputFormat.getSplits()
.
Die Blockgröße hängt von der Implementierung des S3-Dateisystems ab (siehe FileStatus.getBlockSize()
). Z.B. S3AFileStatus
setzen Sie es gleich 0
(und dann FileInputFormat.computeSplitSize()
kommt ins Spiel).
Auch bekommt man nicht spaltet, wenn Ihr Inputformat :) nicht spaltbar ist
0
Spark S3 behandeln, als ob es sich um ein blockbasierten Dateisystem waren, so Partitionierungsregeln für HDFS und S3-Eingänge sind die gleichen: Standardmäßig erhalten Sie eine Partition pro Block. Es lohnt sich Inspektion Anzahl der erstellten Partitionen selbst:
val inputRDD = sc.textFile("s3a://...")
println(inputRDD.partitions.length)
Weiterführende Literatur I this vorschlagen, die Partitionierungsregeln im Detail behandelt.