2017-10-18 37 views
1

我们正在开始使用spark和parquet文件在hadoop集群中收集数据......但是我们很难保证拼花图案模式将来不会发生变化。我们试图找到阅读检察院,即使架构改变的最佳途径......获取分区拼花地图数据框的最新模式

我们要实现的规则是,最新的实木复合地板的文件将成为我们的参考...

我们做了不同的测试,包括:

  • spark.read.parquet( “测试”)过滤器( “年2017年=和月= 10和天> = 15”)
  • spark.read.parquet(“测试/年= 2017 /月= 10 /日= 17“,”测试/年= 2017 /月= 10 /日= 16“,”测试/年= 2017 /月= 10 /日= 15“)
    • //使用不同的顺序
  • spark.read.parquet( “测试/年= 2017 /月= 10 /天= {15,16,17}”)

等测试..

并且由读取方法保留的模式始终是最早的模式(即10月15日的模式)。

有人知道如何获得最新的模式(即十月十七日的一个)吗?

当然,spark.read.option(“mergeSchema”,“true”)不起作用,因为如果我们在最新的实木复合地板中放置了一列,它不会删除列。我们在这里进行了3天的测试......但是可能它会覆盖很大范围的分区。

在此先感谢

问候

回答

0

我在pyspark写的。应适用于其他语言。

schema = spark.read.parquet("test/year=2017/month=10/day=17/").schema 
df = spark.read.schema(schema).parquet("test/*/*/*/") 
+0

非常感谢您的建议... 现在我们重建所有的历史,但您的建议确实非常有趣。 – easyoups