我正在使用两台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: 这是在数据科学经验的一个项目中完成的。
答案 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")
尽管parquet
和load
函数之间没有区别。情况可能是load
无法推断文件中的数据模式(例如,某些数据类型无法通过load
识别或特定于parquet
)。 / p>