【发布时间】:2015-10-05 22:24:07
【问题描述】:
我已经设置了一个收集事件数据的 Spark 1.3.1 应用程序。其中一个属性是称为“occurredAt”的时间戳。我打算将事件数据分区到文件存储上的镶木地板文件中,并根据文档 (https://spark.apache.org/docs/1.3.1/sql-programming-guide.html#partition-discovery) 它表明基于时间的值不仅支持字符串和整数,因此我将日期拆分为年、月、日值和分区如下
events
|---occurredAtYear=2015
| |---occurredAtMonth=07
| | |---occurredAtDay=16
| | | |---<parquet-files>
...
然后我从根路径 /events 加载 parquet 文件
sqlContext.parquetFile('/var/tmp/events')
文档说:
'Spark SQL 会自动提取分区信息 从路径'
但是我的查询
SELECT * FROM events where occurredAtYear=2015
悲惨地说 spark 无法解决 'occuredAtYear' 失败
我可以看到事件所有其他方面的架构,并且可以对这些属性进行查询,但是 printSchema 根本没有在架构上列出发生的年份/月/日?为了使分区正常工作,我缺少什么。
干杯
【问题讨论】:
标签: apache-spark