Wie kann ich auf s3a: // Dateien von Apache Spark zugreifen?
Hadoop 2.6 nicht unterstützt s3a out of the box, also habe ich versucht eine Reihe von Lösungen und Fehlerbehebungen, einschließlich:
bereitstellen mit hadoop, aws und aws-java-sdk => kann nicht gelesen werden-Umgebungsvariable für Anmeldeinformationen
hadoop-aws-in maven => verschiedene transitive Abhängigkeit Konflikte
Hat jemand erfolgreich machen beide arbeiten?
InformationsquelleAutor der Frage tribbloid | 2015-05-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erlebt aus Erster hand den Unterschied zwischen s3a und s3n - 7.9 GB Daten übertragen auf s3a war um ~7 Minuten, während die 7.9 GB Daten auf s3n dauerte 73 Minuten ["us-east-1, us-west-1 leider in beiden Fällen; Rotverschiebung und Lambda als us-east-1 in dieser Zeit] dies ist ein sehr wichtiger Teil von dem Stapel, um die richtige und es lohnt sich, die frustration.
Hier sind die wichtigsten Teile, wie vom Dezember 2015:
Ihre Spark-cluster benötigt eine Hadoop version 2.x oder höher. Wenn Sie die Spark-EC2-setup-Skripts und vielleicht hat es verpasst, den Schalter für die Verwendung von etwas anderes als 1.0 ist die Angabe
--hadoop-major-version 2
(die CDH 4.2 als dies geschrieben wurde).Muss was auf den ersten zu sein scheinen, eine out-of-date AWS-SDK-Bibliothek (gebaut 2014 als version 1.7.4) für Versionen von Hadoop so spät wie 2.7.1 (stabil): aws-java-sdk-1.7.4. Soweit ich sagen kann, mit dieser zusammen mit den bestimmten AWS-SDK Gläser für 1.10.8 hat nicht nichts gebrochen.
Müssen Sie auch die hadoop-aws-2.7.1 JAR im classpath. Diese JAR-Datei enthält die Klasse
org.apache.hadoop.fs.s3a.S3AFileSystem
.In
spark.properties
wahrscheinlich möchten Sie einige Einstellungen, die wie folgt Aussehen:Habe ich detailliert diese Liste im detail auf eine post ich schrieb so arbeitete ich mich durch diesen Prozess. Zusätzlich habe ich alle bedeckt Ausnahme Fällen traf ich auf dem Weg und was ich glaube, um die Ursache der einzelnen und wie Sie zu beheben.
InformationsquelleAutor der Antwort cfeduke
Ich es geschafft habe mit der Funke 1.4.1 prebuilt binary mit hadoop 2.6
Stellen Sie sicher, dass Sie beide
spark.driver.extraClassPath
undspark.executor.extraClassPath
deutete auf die beiden Gläser (hadoop, aws und aws-java-sdk)Wenn Sie die Ausführung auf einem cluster, stellen Sie sicher, dass Ihre Vollstrecker haben Zugriff auf die jar-Dateien auf dem cluster.
InformationsquelleAutor der Antwort ChromeHearts
Ich Schreibe diese Antwort auf Dateien zugreifen, die mit S3A von Funke 2.0.1 auf Hadoop 2.7.3
Kopieren Sie die AWS-Gläser(
hadoop-aws-2.7.3.jar
undaws-java-sdk-1.7.4.jar
) ausgeliefert mit Hadoop standardmäßigHinweis: Wenn die jar-Standorte sind unsicher? ausführen-Befehl "suchen" als privilegierte hilfreich sein können, können Sie auch die Befehle..
in Funke classpath hält, die alle spark-Gläser
Hinweis: Wir können nicht direkt die Lage(Es muss in der property-Datei) wie ich will, machen Antwort generische für Distributionen und Linux-Geschmacksrichtungen. Funke classpath erkannt werden können, finden Sie folgenden Befehl ein,
in
spark-defaults.conf
Hinweis: (Meist wird in
/etc/spark/conf/spark-defaults.conf
)spark übermittelt Gläser(
aws-java-sdk
undhadoop-aws
) in--driver-class-path
wenn nötig.InformationsquelleAutor der Antwort mrsrinivas
Wir mit Hilfe der spark-1.6.1 mit Sofort-und wir waren immer viele Fragen schriftlich S3 von spark. Ich Kredit zu geben, cfeduke für die Antwort. Die leichte änderung, die ich gemacht hatte, war das hinzufügen von maven Koordinaten zu der spark.jar Konfiguration in der Funke-defaults.conf-Datei. Ich habe versucht, mit hadoop-aws:2.7.2 war aber noch immer viele Fehler, so dass wir wieder auf 2.7.1. Unten sind die Veränderungen in der Funke-defaults.conf, die für uns arbeiten:
Danke cfeduke für die Zeit nehmen, zu schreiben, Ihre post. Es war sehr hilfreich.
InformationsquelleAutor der Antwort Kyle Burke
Hier sind die details wie der Oktober 2016, wie er auf Spark-Gipfel der EU: Apache Spark und Objekt Speichert.
Wichtige Punkte
Product placement: die lese-performance Seite von HADOOP-11694 ist enthalten in HDP2.5; Die Funken-und S3-Dokumentation es könnte von Interesse sein —vor allem die tuning-Optionen.
InformationsquelleAutor der Antwort Steve Loughran
Verwendung von Spark-1.4.1 pre-gebaut mit Hadoop 2.6, ich bin in der Lage zu bekommen s3a://zu arbeiten, wenn die Bereitstellung auf einem Spark-Standalone-cluster durch hinzufügen der hadoop-aws und aws-java-sdk-jar-Dateien aus dem Hadoop-2.7.1-Distribution (zu finden unter $HADOOP_HOME/share/hadoop/tools/lib der Hadoop-2.7.1) zu meinem SPARK_CLASSPATH Umgebungsvariable in meinem $SPARK_HOME/conf/spark-env.sh Datei.
InformationsquelleAutor der Antwort richvt2k
als Sie sagte, hadoop 2.6 nicht unterstützt s3a und die neueste spark Version 1.6.1 nicht unterstützt hadoop-2.7, aber spark 2.0 ist definitiv kein problem mit hadoop 2.7 und s3a.
für spark 1.6.x, haben wir etwas schmutziger hack, mit dem s3-Treiber von EMR... können Sie einen Blick in diesem doc: https://github.com/zalando/spark-appliance#emrfs-support
wenn Sie immer noch wollen, um zu versuchen, zu verwenden, s3a in spark 1.6.x finden Sie die Antwort hier: https://stackoverflow.com/a/37487407/5630352
InformationsquelleAutor der Antwort chutium
Können Sie auch hinzufügen, die S3A Abhängigkeiten zu den classpath mit
spark-defaults.conf
.Beispiel:
Oder einfach nur:
Nur sicherstellen, dass entsprechend Ihrer AWS-SDK-version auf die version von Hadoop. Für mehr Informationen Blick auf diese Antwort: Nicht auf S3-Daten mit Spark 2.2
InformationsquelleAutor der Antwort LXXIII
Hier ist eine Lösung für pyspark (evtl. mit proxy):
InformationsquelleAutor der Antwort raul ferreira
Können Sie s3n://und ändern spark output committer um eine, die direkt die Ausgänge der Datei (siehe dieses snippet)
InformationsquelleAutor der Antwort Arnon Rotem-Gal-Oz
Ich benutze Funken version 2.3, und wenn ich speichern eines datasets mit Funken wie:
Es funktioniert perfekt und erspart mir die Daten in s3.
InformationsquelleAutor der Antwort Abdulhafeth Sartawi