我们使用的是Avro数据格式,并且数据按年,月,日,小时,分钟
分区我看到HDFS中存储的数据为
/data/year=2018/month=01/day=01/hour=01/min=00/events.avro
我们使用
加载数据val schema = new Schema.Parser().parse(this.getClass.getResourceAsStream("/schema.txt"))
val df = spark.read.format("com.databricks.spark.avro").option("avroSchema",schema.toString).load("/data")
然后使用谓词下推过滤数据-
var x = isInRange(startDate, endDate)($"year", $"month", $"day", $"hour", $"min")
df = tableDf.filter(x)
有人可以解释幕后发生的事情吗? 我想特别了解何时过滤输入文件以及在哪里过滤? 有趣的是,当我打印模式时,年,月,日和小时字段会自动添加,即实际数据不包含这些列。 Avro是否添加这些字段? 想要清楚地了解如何过滤文件以及如何创建分区。