web-dev-qa-db-fra.com

Comment lire un parquet dans PySpark écrit par Spark?

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.

24
Ross Lewis

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')
32
Jeril

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. ).

11
himanshuIIITian