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