Spark Avro谓词下推

时间:2018-08-08 13:46:33

标签: scala apache-spark apache-spark-sql predicate spark-avro

我们使用的是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是否添加这些字段? 想要清楚地了解如何过滤文件以及如何创建分区。

0 个答案:

没有答案