Как я прочитал паркет в PySpark, написанный от Spark?

Я использую два ноутбука Jupyter, чтобы делать разные вещи в анализе. В моем ноутбуке Scala я пишу некоторые мои очищенные данные в паркет:

partitionedDF.select("noStopWords","lowerText","prediction").write.save("swift2d://xxxx.keystone/commentClusters.parquet")

Затем я перехожу к своей записной книжке Python для чтения в данных:

df = spark.read.load("swift2d://xxxx.keystone/commentClusters.parquet")

и я получаю следующую ошибку:

AnalysisException: u'Unable to infer schema for ParquetFormat at swift2d://RedditTextAnalysis.keystone/commentClusters.parquet. It must be specified manually;'

Я просмотрел документацию по искровым разрядам, и я не думаю, что мне нужно будет указать схему. Кто-нибудь сталкивался с чем-то подобным? Должен ли я делать что-то еще, когда я сохраняю/загружаю? Данные приземляются в хранилище объектов.

изменить: Я пою искру 2.0 как в чтениях, так и в записи.

edit2: Это было сделано в проекте "Опыт в области данных".

Ответ 1

Я читаю паркетный файл следующим образом:

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

Ответ 2

Вы можете использовать формат parquet Spark Session для чтения паркетных файлов. Вот так:

df = spark.read.parquet("swift2d://xxxx.keystone/commentClusters.parquet")

Хотя между функциями parquet и load нет разницы. Возможно, что load не может вывести схему данных в файл (например, некоторый тип данных, который не идентифицируется с помощью load или специфичен для parquet).