2016-05-06 4 views
1

Ich versuche mit dem pySpark auf s3-Dateien vom lokalen Funke-Kontext zuzugreifen. Ich halte File "C:\Spark\python\lib\py4j-0.9-src.zip\py4j\protocol.py", line 308, in get_return_value py4j.protocol.Py4JJavaError: An error occurred while calling o20.parquet. : java.lang.RuntimeException: java.lang.ClassNotFoundException: Class org.apache.hadoop.fs.s3native.NativeS3FileSystem not found Klasse org.apache.hadoop.fs.s3native.NativeS3FileSystem nicht gefunden (Spark 1.6 Windows)

bekomme ich os.environ['AWS_ACCESS_KEY_ID'] und os.environ['AWS_SECRET_ACCESS_KEY'] gesetzt hatte, bevor ich df = sqc.read.parquet(input_path) genannt. Ich fügte auch diese Zeilen hinzu: hadoopConf.set("fs.s3.impl", "org.apache.hadoop.fs.s3native.NativeS3FileSystem") hadoopConf.set("fs.s3.awsSecretAccessKey", os.environ["AWS_SECRET_ACCESS_KEY"]) hadoopConf.set("fs.s3.awsAccessKeyId", os.environ["AWS_ACCESS_KEY_ID"]) Ich habe auch versucht, s3 zu s3n, s3a zu ändern. Keine funktionierte.

Irgendeine Idee, wie es funktioniert? Ich bin auf 10 Windows pySpark Spark 1.6.1 für Hadoop gebaut 2.6.0

Antwort

4

Ich bin mit pyspark die Bibliotheken von hadoop-aws anhängt.

Sie müssen s3n in Ihrem Eingabepfad verwenden. Ich betreibe das von Mac OS. Ich bin mir also nicht sicher, ob es unter Windows funktioniert.

$SPARK_HOME/bin/pyspark --packages org.apache.hadoop:hadoop-aws:2.7.1 
+0

Es ist hilfreich für mich in Linux. –

0

Dieses Paket Erklärung funktioniert auch in funken Schale

Funken Schale --packages org.apache.hadoop: Hadoop-aws: 2.7.1

und geben Sie in die Schale

sc.hadoopConfiguration.set ("fs.s3n.awsAccessKeyId", "xxxxxxxxxxxxx") sc.hadoopConfigurat ion.set ("fs.s3n.awsSecretAccessKey", "xxxxxxxxxxxxxxxxx")