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)
Документация для паркета говорит, что формат самоописывается, и полная схема была доступна, когда файл паркета был сохранен. Что дает?
Использование Spark 2.1.1. Также не работает в 2.2.0.
Нашел этот отчет об ошибке, но был исправлен в 2.0.1, 2.1.0.
ОБНОВЛЕНИЕ: Это работает при подключении к master = "local" и завершается ошибкой при подключении к master = "mysparkcluster".