我们开始使用火花和镶木地板文件在hadoop集群中收集数据......但是我们很难保证镶木地板模式将来不会改变 . 我们试图找到读取parquets的最佳方式,即使架构发生变化......
我们要实施的规则是最新的镶木地板文件将是我们的参考...
我们做了不同的测试包括:
-
spark.read.parquet("test").filter("year=2017 and month=10 and day>=15")
-
spark.read.parquet("test/year=2017/month=10/day=17","test/year=2017/month=10/day=16","test/year=2017/month=10/day=15")
-
//使用不同的顺序进行测试
-
spark.read.parquet("test/year=2017/month=10/day={15,16,17}")
等等...
并且read方法保留的模式始终是最旧的模式(即10月15日的模式) .
有人知道如何获得最新的架构(即十月十七日)吗?
当然spark.read.option(“mergeSchema”,“true”)不起作用,因为如果我们在最新的镶木地板中删除了一列,它就不会删除一列 . 我们在这里进行了3天的测试......但可能会在很大范围的分区上进行测试 .
提前致谢
问候
1 回答
我在pyspark写这篇文章 . 应适用于其他语言 .