apache-spark - 如何只加载最后一个分区的数据

标签 apache-spark

我有一些数据以这种方式分区:
/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") .
这种解决方案的缺点是会丢失分区信息,例如 yearmonth ,这意味着将无法再应用基于年或月的操作。

是否可以要求 Spark 只加载每个月的最后一个版本?你会怎么做?

最佳答案

好吧,Spark 支持谓词下推,所以如果你提供 filter关注 load ,它只会读入满足 filter 中的条件的数据。 .像这样:

spark.read.option("basePath", "/data").load("/data").filter('version === 3)

你可以保留分区信息:)

关于apache-spark - 如何只加载最后一个分区的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40663066/

相关文章:

python - 错误 "AttributeError: ' Py4JError'对象没有属性 'message'构建DecisionTreeModel

scala - scala 中案例类字段的最大数量是多少?

r - SparkR 和软件包

python - 如何使用Python在Spark中对线性回归进行一次热编码?

apache-spark - Airflow + Kubernetes VS Airflow + Spark

scala - Spark sql 查询执行失败并出现 org.apache.parquet.io.ParquetDecodingException

java - 运行 spark 时出现堆错误?

scala - 如何将时间戳列转换为纪元秒?

scala - 在 Spark 2+ 中通过 SparkSession 向 Kryo 注册类

scala - 如何实现 ScalaTest FunSuite 以避免样板 Spark 代码和导入隐式