Estoy usando dos cuadernos Jupyter para hacer cosas diferentes en un análisis. En mi cuaderno de Scala, escribo algunos de mis datos limpios en el parquet:
partitionedDF.select("noStopWords","lowerText","prediction").write.save("swift2d://xxxx.keystone/commentClusters.parquet")
Luego voy a mi cuaderno de Python para leer los datos:
df = spark.read.load("swift2d://xxxx.keystone/commentClusters.parquet")
y me sale el siguiente error:
AnalysisException: u'Unable to infer schema for ParquetFormat at swift2d://RedditTextAnalysis.keystone/commentClusters.parquet. It must be specified manually;'
He mirado la documentación de Spark y no creo que se me deba pedir que especifique un esquema. ¿Alguien se ha encontrado con algo como esto? ¿Debería estar haciendo algo más cuando guardo/cargo? Los datos están aterrizando en Object Storage.
editar: estoy cantando chispa 2.0 tanto en la lectura como en la escritura.
edit2: Esto se hizo en un proyecto en Data Science Experience.
Leí el archivo de parquet de la siguiente manera:
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')
Puede usar el formato de parquet
de Spark Session para leer archivos de parquet. Me gusta esto:
df = spark.read.parquet("swift2d://xxxx.keystone/commentClusters.parquet")
Aunque, no hay diferencia entre parquet
y funciones de load
. Puede darse el caso de que load
no pueda inferir el esquema de datos en el archivo (por ejemplo, algún tipo de datos que no sea identificable por load
o específico de parquet
).