Ich verstehe nicht, wie Sie einfach den Inhalt eines S3-Buckets auf EMR während eines Funkenjobs auflisten. Ich wollte die folgendenListe S3-Ordner auf EMR
Configuration conf = spark.sparkContext().hadoopConfiguration();
FileSystem s3 = S3FileSystem.get(conf);
List<LocatedFileStatus> list = toList(s3.listFiles(new Path("s3://mybucket"), false))
Dies immer mit dem folgenden Fehler
java.lang.IllegalArgumentException: Wrong FS: s3://*********/, expected: hdfs://**********.eu-central-1.compute.internal:8020
im hadoopConfiguration fs.defaultFS -> hdfs://**********.eu-central-1.compute.internal:8020
So wie ich es verstehe nicht tun, wenn ich nur nicht ein Protokoll verwenden,/myfolder/myfile anstelle von zB hdfs: // myordner/meinedatei wird standardmäßig auf df.defaultFS gesetzt. Aber ich würde erwarten, wenn ich meine s3 angeben: // mybucket/die fs.defaultFS sollte keine Rolle spielen.
Wie greift man auf die Verzeichnisinformationen zu? spark.read.parquet ("s3: //mybucket/*.parquet") funktioniert gut, aber für diese Aufgabe muss ich die Existenz einiger Dateien prüfen und möchte auch einige löschen. Ich nahm an, dass org.apache.hadoop.fs.FileSystem das richtige Werkzeug wäre.
PS: Ich verstehe auch nicht, wie die Protokollierung funktioniert. Wenn ich den Bereitstellungsmodus-Cluster verwende (ich möchte jars von s3 bereitstellen, was im Client-Modus nicht funktioniert), kann ich meine Protokolle nur in s3: // logbucket/j -.../containers/application finden ... /conatiner...0001. Es gibt eine ziemlich lange Verzögerung bevor diese in S3 gezeigt werden. Wie finde ich es über ssh auf dem Master? oder gibt es einen schnelleren/besseren Weg, um Funkenanmeldeprotokolle zu prüfen? UPDATE: Gefunden nur unter /mnt/var/log/hadoop-yarn/containers
aber die es ist im Besitz von Garn: Garn und als Hadoop Benutzer kann ich es nicht lesen. Ideen :(