我如何阅读从Spark编写的PySpark中的镶木地板?

时间:2017-03-24 04:02:37

标签: python scala apache-spark pyspark data-science-experience

我正在使用两台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;'

我查看了spark文档,但我认为不应该要求我指定架构。有没有人碰到这样的事情?我保存/加载时应该做些什么吗?数据将在对象存储中登陆。

编辑: 我在阅读和写作中都唱了火花2.0。

EDIT2: 这是在数据科学经验的一个项目中完成的。

2 个答案:

答案 0 :(得分:28)

我按以下方式阅读了镶木地板文件:

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

答案 1 :(得分:9)

您可以使用parquet格式的Spark会话来阅读镶木地板文件。像这样:

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

尽管parquetload函数之间没有区别。情况可能是load无法推断文件中的数据模式(例如,某些数据类型无法通过load识别或特定于parquet)。 / p>