/ / Odczytywanie pliku z archiwum tar.gz w Spark - java, apache-spark

Czytanie pliku z archiwum tar.gz w Spark - java, apache-spark

Mam kilka plików tar.gz, które chciałbym przetworzyć za pomocą Spark bez ich dekompresji.

Jedno archiwum ma około ~ 700 MB i zawiera 10 różnych plików, ale interesuje mnie tylko jeden z nich (czyli około 7 GB po dekompresji).

wiem to context.textFile obsługuje tar.gz, ale nie jestem pewien, czy jest to właściwe narzędzie, gdy archiwum zawiera więcej niż jeden plik. Spowoduje to, że Spark zwróci zawartość wszystkich plików (linia po linii) w archiwum, w tym nazwy plików z danymi binarnymi.

Czy jest jakiś sposób, aby wybrać plik z tar.gz, który chciałbym zmapować?

Odpowiedzi:

1 dla odpowiedzi № 1

AFAIK, sugerowałbym sc.binaryFiles metoda ... patrz poniżej doc. tam, gdzie obecna jest nazwa pliku i zawartość pliku, możesz zmapować i pobrać żądany plik i przetworzyć go.


public RDD<scala.Tuple2<String,PortableDataStream>> binaryFiles(String path,
int minPartitions)

Uzyskaj RDD dla zestawu danych czytelnego dla Hadoop jako PortableDataStream dla każdego pliku (przydatne dla danych binarnych) Na przykład, jeśli masz następujące pliki:

hdfs: // a-hdfs-path / part-00000
hdfs: // a-hdfs-path / part-00001
...
hdfs: // a-hdfs-path / part-nnnnn

Do val rdd = sparkContext.binaryFiles("hdfs://a-hdfs-path"),

następnie rdd zawiera

(a-hdfs-path / part-00000, jego treść)
(a-hdfs-path / part-00001, jego treść)
...
(a-hdfs-path / part-nnnnn, jego zawartość)

Sprawdź również to