Ich möchte eine S3-Datei von meinem (lokalen) Rechner über Spark (wirklich pyspark) lesen. Nun, ich erhalte immer Authentifizierungsfehler wieLokales Lesen von S3-Dateien über Spark (oder besser: pyspark)
java.lang.IllegalArgumentException: AWS Access Key ID und Geheim Access Key muss als Benutzername oder Passwort (jeweils) eine S3N URL angegeben werden, oder durch die Einstellung fs.s3n.awsAccessKeyId oder fs.s3n.awsSecretAccessKey-Eigenschaften (jeweils).
sah ich überall hier und im Web, versuchten viele Dinge, aber anscheinend S3 im letzten Jahr oder Monate hat sich verändert, und alle Methoden versagt aber ein:
pyspark.SparkContext().textFile("s3n://user:[email protected]/key")
(beachten Sie die s3n
[s3
hat nicht funktioniert]). Jetzt möchte ich keine URL mit dem Benutzer und dem Passwort verwenden, da sie in den Protokollen erscheinen können, und ich bin mir auch nicht sicher, wie ich sie aus der Datei ~/.aws/credentials
bekommen kann.
Also, wie kann ich lokal von S3 durch Spark (oder besser, pyspark) mit den AWS-Anmeldeinformationen von der jetzt standard~/.aws/credentials
Datei lesen (idealerweise ohne die Anmeldeinformationen dort in eine andere Konfigurationsdatei zu kopieren)?
PS: Ich habe versucht, os.environ["AWS_ACCESS_KEY_ID"] = …
und os.environ["AWS_SECRET_ACCESS_KEY"] = …
, es hat nicht funktioniert.
PPS: Ich bin mir nicht sicher, wo ich die Eigenschaften "fs.s3n.awsAccessKeyId" oder "fs.s3n.awsSecretAccessKey" festlegen soll (Google hat sich nichts ausgedacht). Ich habe jedoch viele Möglichkeiten versucht, diese zu setzen: SparkContext.setSystemProperty()
, sc.setLocalProperty()
und conf = SparkConf(); conf.set(…); conf.set(…); sc = SparkContext(conf=conf)
. Nichts hat geklappt.
Siehe auch [diese Antwort] (http://stackoverflow.com/a/33787125/1243926). – osa