Comment lire parquet de données à partir de S3 à étincelle dataframe Python?
Je suis nouveau à l'Étincelle et je ne suis pas en mesure de trouver cette... j'ai beaucoup de parquet fichiers téléchargés dans s3
à l'emplacement :
s3://a-dps/d-l/sco/alpha/20160930/parquet/
La taille totale de ce dossier est 20+ Gb
,. Comment segmenter et de lire cela dans un dataframe
Comment faire pour charger tous ces fichiers dans un dataframe?
Mémoire allouée à l'étincelle de cluster est de 6 go.
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/*")
Erreur :
Py4JJavaError: Une erreur s'est produite lors d'un appel o33.parquet. : java.io.IOException: Pas de système de fichiers pour le système: s3 au org.apache.hadoop.fs.Système de fichiers.getFileSystemClass(système de fichiers.java:2660) au org.apache.hadoop.fs.Système de fichiers.createFileSystem(système de fichiers.java:2667) au org.apache.hadoop.fs.Système de fichiers.accéder à$200(système de fichiers.java:94) au org.apache.hadoop.fs.Système De Fichiers$Cache.getInternal(système de fichiers.java:2703) au org.apache.hadoop.fs.Système De Fichiers$Cache.get(système de fichiers.java:2685) au org.apache.hadoop.fs.Système de fichiers.get(système de fichiers.java:373) au org.apache.hadoop.fs.Chemin d'accès.getFileSystem(Chemin d'accès.java:295) au org.apache.spark.sql.l'exécution.les sources de données.Source de données$$anonfun$14.appliquer(source de données.scala:372) au org.apache.spark.sql.l'exécution.les sources de données.Source de données$$anonfun$14.appliquer(source de données.scala:370) à la scala.collection.TraversableLike$$anonfun$flatMap$1.appliquer(TraversableLike.scala:241) à la scala.collection.TraversableLike$$anonfun$flatMap$1.appliquer(TraversableLike.scala:241) à la scala.collection.immuable.Liste.foreach(la Liste.scala:381) à la scala.collection.TraversableLike de classe$.flatMap(TraversableLike.scala:241) à la scala.collection.immuable.Liste.flatMap(la Liste.scala:344)
également nécessaire d'ajouter les paquets spark dossier : 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
Peut-être que ce résumé peut vous aider: gist.github.com/asmaier/5768c7cda3620901440a62248614bbd0
Peut-être que ce résumé peut vous aider: gist.github.com/asmaier/5768c7cda3620901440a62248614bbd0
OriginalL'auteur Viv | 2017-06-19
Vous devez vous connecter pour publier un commentaire.
Le fichier schéma (
s3
)que vous utilisez n'est pas correct. Vous aurez besoin d'utiliser las3n
schéma ous3a
(pour les plus gros objets s3):Je vous suggère de lire plus au sujet de la Hadoop-AWS module: l'Intégration avec Amazon Web Services vue d'ensemble.
si vous avez fourni les informations d'identification, s3n serait suffisant. Parfois, il pourrait avoir besoin de vous afin de vous fournir un point de terminaison, comme je l'ai décrit ici stackoverflow.com/questions/44589563/...
aussi comment morceau?
que voulez-vous dire ?
il y a beaucoup de .parquet fichiers dans ce dossier. qui est le total de+ de 20 go, mais mon étincelle a 6 go d'espace seulement. Donc, il y a qu'à lire dans un df signifie que je dois lire en 4 morceaux?
OriginalL'auteur eliasah
Vous avez à utiliser SparkSession au lieu de sqlContext depuis Spark 2.0
OriginalL'auteur Artem Nachtigall