我有一些数据是这样分区的:
/data/year=2016/month=9/version=0
/data/year=2016/month=10/version=0
/data/year=2016/month=10/version=1
/data/year=2016/month=10/version=2
/data/year=2016/month=10/version=3
/data/year=2016/month=11/version=0
/data/year=2016/month=11/version=1
使用此数据时,我想仅加载每个月的最后一个版本。
执行此操作的一个简单方法是load("/data/year=2016/month=11/version=3")
而不是做load("/data")
.
该解决方案的缺点是分区信息丢失,例如year
and month
,这意味着将无法再应用基于年份或月份的操作。
是否可以要求 Spark 仅加载每个月的最后一个版本?你会怎么做呢?
嗯,Spark 支持谓词下推,所以如果你提供filter
遵循load
,它只会读入满足条件的数据filter
。像这样:
spark.read.option("basePath", "/data").load("/data").filter('version === 3)
并且您可以保留分区信息:)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)