我有一些数据文件(本例中为json,但也可能是avro格式)存储在如下的目录结构中:
dataroot
+-- year=2015
+-- month=06
+-- day=01
+-- data1.json
+-- data2.json
+-- data3.json
+-- day=02
+-- data1.json
+-- data2.json
+-- data3.json
+-- month=07
+-- day=20
+-- data1.json
+-- data2.json
+-- data3.json
+-- day=21
+-- data1.json
+-- data2.json
+-- data3.json
+-- day=22
+-- data1.json
+-- data2.json
使用spark-sql创建临时表:
CREATE TEMPORARY TABLE dataTable
USING org.apache.spark.sql.json
OPTIONS (
path "dataroot/*"
)
查询表格可以正常工作,但是我目前还不能使用目录进行修剪。
有没有一种方法可以将目录结构注册为分区(不使用Hive),以避免在查询时扫描整个树?比如说,我想比较每个月的第一天的数据并只读取这些日期的目录。
使用Apache Drill,我可以在查询时使用目录作为谓词,例如dir0
等。Spark SQL是否可以做类似的事情?