Как я прочитал паркет в 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
).