J'utilise deux cahiers Jupyter pour effectuer différentes analyses. Dans mon cahier Scala, j’écris certaines de mes données nettoyées dans un parquet:
partitionedDF.select("noStopWords","lowerText","prediction").write.save("Swift2d://xxxx.keystone/commentClusters.parquet")
Je vais ensuite dans mon cahier Python) pour lire les données:
df = spark.read.load("Swift2d://xxxx.keystone/commentClusters.parquet")
et j'obtiens l'erreur suivante:
AnalysisException: u'Unable to infer schema for ParquetFormat at Swift2d://RedditTextAnalysis.keystone/commentClusters.parquet. It must be specified manually;'
J'ai consulté la documentation de spark) et je ne pense pas que je devrais être obligé de spécifier un schéma. Est-ce que quelqu'un a déjà rencontré quelque chose comme ça? Les données atterrissent dans Object Storage.
edit: Je chante spark 2.0 à la fois en lecture et en écriture.
edit2: Cela a été fait dans un projet de Data Science Experience.
Je lis le dossier de parquet de la manière suivante:
from pyspark.sql import SparkSession
# initialise sparkContext
spark = SparkSession.builder \
.master('local') \
.appName('myAppName') \
.config('spark.executor.memory', '5gb') \
.config("spark.cores.max", "6") \
.getOrCreate()
sc = spark.sparkContext
# using SQLContext to read parquet file
from pyspark.sql import SQLContext
sqlContext = SQLContext(sc)
# to read parquet file
df = sqlContext.read.parquet('path-to-file/commentClusters.parquet')
Vous pouvez utiliser le format parquet
de Spark Session pour lire les fichiers de parquet. Comme ceci:
df = spark.read.parquet("Swift2d://xxxx.keystone/commentClusters.parquet")
Bien qu'il n'y ait aucune différence entre les fonctions parquet
et load
. Il se peut que load
ne puisse pas déduire le schéma de données du fichier (par exemple, un type de données non identifiable par load
ou spécifique à parquet
. ).