2016-05-25 7 views
3

Normalerweise lese und schreibe ich Dateien in Spark mit .gz, wobei die Anzahl der Dateien der Anzahl der RDD-Partitionen entsprechen sollte. I.e. Eine .gz-Datei wird in eine einzelne Partition eingelesen. Wenn ich jedoch in einem einzelnen .bz2 lese, würde ich immer noch eine einzige riesige Partition bekommen? Oder unterstützt Spark automatisch die Aufteilung eines .bz2 auf mehrere Partitionen?Spark: Unterschied beim Einlesen von .gz und .bz2

Woher weiß ich auch, wie viele Partitionen es sein würde, während Hadoop es aus einer bz2-Datei einliest. Vielen Dank!

Antwort

4
However, if I read in one single .bz2, would I still get one single giant partition? 
Or will Spark support automatic split one .bz2 to multiple partitions? 

Wenn Sie n Partitionen geben Sie eine bzip2-Datei zu lesen, werden Funken n Aufgaben laichen die Datei parallel zu lesen. Der Standardwert n ist auf sc.defaultParallelism festgelegt. Die Anzahl der Partitionen ist das zweite Argument im Aufruf von textFile (docs).


. one giant .gz file will read in to a single partition. 

Bitte beachten Sie, dass Sie immer ein

tun können

sc.textFile(myGiantGzipFile).repartition(desiredNumberOfPartitions)

die gewünschte Anzahl an Partitionen zu erhalten, nachdem die Datei gelesen wurde.


Also, how do I know how many partitions it would be while Hadoop read in it from one bz2 file.

Das wäre für die Scala API oder yourRDD.getNumPartitions() für die Python API.

Verwandte Themen