我正在尝试使用DataFrameReader.load("table name")
加载hive
表记录并返回为DataFrame
。
但我不想加载整个记录,我只想获取具有特定日期的记录(这是配置单元表中的字段之一)。
如果我在返回的DataFrame中添加where条件,它会先加载整个表,然后根据日期filter
记录吗?
因为配置单元表很大,而且是根据日期字段进行分区的。
基本上,我想在不加载整个表的情况下使用加载方法来实现select * from table where date='date'
。
Spark的最新版本支持名为"谓词下推"的功能。它完全按照您的意愿:在可能的情况下,将SQL子句where推送到源代码中。我不确定谓词下推现在是否适用于Hive数据源(它适用于parquet、JDBC和其他一些源)。另请参阅spark谓词下推是否适用于JDBC?