33

我正在使用两个 Jupyter 笔记本在分析中做不同的事情。在我的 Scala notebook 中,我将一些清理过的数据写入 parquet:

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

然后我去我的 Python notebook 读入数据:

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

我查看了 spark 文档,我认为我不应该被要求指定模式。有没有人遇到过这样的事情?保存/加载时我应该做其他事情吗?数据登陆对象存储。

编辑:我在读和写时都在唱 spark 2.0。

edit2:这是在 Data Science Experience 的一个项目中完成的。

4

2 回答 2

53

我通过以下方式阅读镶木地板文件:

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')
于 2017-11-09T17:10:59.583 回答
20

您可以使用parquetSpark Session 的格式来读取 parquet 文件。像这样:

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

parquet虽然,和load功能之间没有区别。可能load无法推断文件中数据的模式(例如,某些数据类型无法由 识别load或特定于parquet)。

于 2017-03-24T04:43:46.207 回答