Wie zu Lesen Parkett-Daten aus dem S3 zu wecken dataframe Python?
Ich bin neu zu entfachen, und ich bin nicht in der Lage diese zu finden... ich habe eine Menge von Parkett-Dateien hochgeladen in s3
im Ort :
s3://a-dps/d-l/sco/alpha/20160930/parquet/
Die Gesamtgröße dieses Ordners ist 20+ Gb
,. Wie aufteilen, und Lesen Sie diese in einen dataframe
Laden Sie alle diese Dateien in ein dataframe?
Zugewiesenen Arbeitsspeicher auf spark-cluster ist 6 gb.
from pyspark import SparkContext
from pyspark.sql import SQLContext
from pyspark import SparkConf
from pyspark.sql import SparkSession
import pandas
# SparkConf().set("spark.jars.packages","org.apache.hadoop:hadoop-aws:3.0.0-alpha3")
sc = SparkContext.getOrCreate()
sc._jsc.hadoopConfiguration().set("fs.s3.awsAccessKeyId", 'A')
sc._jsc.hadoopConfiguration().set("fs.s3.awsSecretAccessKey", 's')
sqlContext = SQLContext(sc)
df2 = sqlContext.read.parquet("s3://sm/data/scor/alpha/2016/parquet/*")
Fehler :
Py4JJavaError: Fehler beim aufrufen o33.Parkett. : java.io.IOException: Nein Dateisystem für das Schema: s3 bei org.apache.hadoop.fs.Dateisystem.getFileSystemClass(FileSystem.java:2660) bei org.apache.hadoop.fs.Dateisystem.createFileSystem(FileSystem.java:2667) bei org.apache.hadoop.fs.Dateisystem.access$200(FileSystem.java:94) bei org.apache.hadoop.fs.Dateisystem$Cache.getInternal(FileSystem.java:2703) bei org.apache.hadoop.fs.Dateisystem$Cache.bekommen(das Dateisystem.java:2685) bei org.apache.hadoop.fs.Dateisystem.bekommen(das Dateisystem.java:373) bei org.apache.hadoop.fs.Pfad.getFileSystem(Path.java:295) bei org.apache.spark.sql.Ausführung.datasources.DataSource$$anonfun$14.gelten(DataSource.scala:372) bei org.apache.spark.sql.Ausführung.datasources.DataSource$$anonfun$14.gelten(DataSource.scala:370) in der scala.Sammlung.TraversableLike$$anonfun$flatMap$1.gelten(TraversableLike.scala:241) in der scala.Sammlung.TraversableLike$$anonfun$flatMap$1.gelten(TraversableLike.scala:241) in der scala.Sammlung.unveränderlich.Liste.foreach(List.scala:381) in der scala.Sammlung.TraversableLike$Klasse.flatMap(TraversableLike.scala:241) in der scala.Sammlung.unveränderlich.Liste.flatMap(die Liste.scala:344)
auch benötigt zum hinzufügen von Paketen in den spark-Ordner : org.apache.hadoop:hadoop-aws:3.0.0-alpha3, org.apache.httpcomponents:httpclient:4.3.6, org.apache.httpcomponents:httpcore:4.3.3, com.amazonaws:aws-java-sdk-core:1.10.27, com.amazonaws:aws-java-sdk-s3:1.10.27, com.amazonaws:aws-java-sdk-sts:1.10.27
Vielleicht ist dies die wesentliche, die Ihnen helfen können: gist.github.com/asmaier/5768c7cda3620901440a62248614bbd0
Vielleicht ist dies die wesentliche, die Ihnen helfen können: gist.github.com/asmaier/5768c7cda3620901440a62248614bbd0
InformationsquelleAutor Viv | 2017-06-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dem Datei-schema (
s3
), die Sie verwenden, ist nicht korrekt. Sie müssen verwenden Sie dies3n
schema oders3a
(für größere s3-Objekte):Ich schlage vor, Sie Lesen mehr über die Hadoop-AWS-Modul: Integration mit Amazon Web Services-Übersicht.
wenn Sie die Anmeldeinformationen, s3n genug sein würde. Manchmal ist es vielleicht brauchen Sie, um eine Endpunkt-wie ich Sie hier geschildert habe, stackoverflow.com/questions/44589563/...
auch wie aufteilen?
was meinst du ?
es gibt viele .Parkett-Dateien in diesem Ordner. die insgesamt 20+ gb, aber meine Funke hat 6 gb Speicherplatz nur. Es ist also zu Lesen in einem df bedeutet, dass ich Lesen müssen, in 4 Stücke?
InformationsquelleAutor eliasah
Haben Sie zu verwenden SparkSession statt sqlContext seit Spark 2.0
InformationsquelleAutor Artem Nachtigall