response = "mi_or_chd_5"
outcome = sqlc.sql("""select eid,{response} as response
from outcomes
where {response} IS NOT NULL""".format(response=response))
outcome.write.parquet(response, mode="overwrite") # Success
print outcome.schema
StructType(List(StructField(eid,IntegerType,true),StructField(response,ShortType,true)))
但是當推斷模式:無法加載平面文件
outcome2 = sqlc.read.parquet(response) # fail
失敗:
AnalysisException: u'Unable to infer schema for Parquet. It must be specified manually.;'
在
/usr/local/lib/python2.7/dist-packages/pyspark-2.1.0+hadoop2.7-py2.7.egg/pyspark/sql/utils.pyc in deco(*a, **kw)
木地板的文件說,該格式是自我描述,並且完整的模式在t時可用他拼花地板文件被保存了。是什麼賦予了?
使用星火2.1.1。在2.2.0中也失敗了。
發現this bug report,但被固定在 2.0.1,2.1.0。
更新:這項工作時連接master =「本地」,並連接到master =「mysparkcluster」失敗。通常,當您嘗試讀取一個空目錄作爲地板出現
數據幀不爲空。我相信問題發生是因爲文件名'response'無法寫入羣集。在本地模式下工作正常。 – user48956
然後,也許你可以嘗試更改用戶名。在Pyspark:'os.environ [「HADOOP_USER_NAME」] =「hdfs」'或在Scala'System.setProperty(「HADOOP_USER_NAME」,「hdfs」)' –
我不確定我們是否使用hadoop。是否需要Spark,並且在安裝Spark集羣時需要使用用戶配置文件進行配置? (我們所有的數據都來自關係數據庫,並根據需要加載到Spark中)。 在任何情況下我都不需要在「hdfs://」前加上文件名。 如果使用一個文件名,如節能工程「/我的/ NFS/network_directory /文件名」。這也使我認爲路徑是指工人本地文件系統。 (對不起 - 火花的n00b) – user48956