2
我正在使用數據源API實現我自己的數據源。關係的buildScan不顯示過濾器
我用了幾個文件我在網上找到,並用下面的代碼上來:
public class MyRelation extends BaseRelation implements TableScan, PrunedScan, PrunedFilteredScan {
public RDD<Row> buildScan(String[] requiredColumns, Filter[] filters) {
System.out.println(Arrays.toString(filters));
}
}
我使用下面的查詢得到空過濾器:
SELECT field1,field2,field3 from table WHERE field2>4 AND field3=1000
我跑:
SQLContext sqc = new SQLContext(sparkContext);
Dataset<Row> sqlResult = sqc.sql(query).where("field2 > 4").filter("field2 > 15");
正如你所看到的,我也嘗試了API的filter
和where
函數,但沒有任何工作。
我也試過unhandledFilters功能這是空白:
public Filter[] unhandledFilters(Filter[] filters)
{
System.out.println(Arrays.toString(filters));
return filters;
}
我期待得到過濾器「字段2> 15」和其他人filters
數組中,但它是空白。
任何想法我做錯了什麼,可以做些什麼來解決這個問題?
P.S.我確實實現了TableScan和PrunedScan,並調用了正確的方法,當我運行沒有where子句的查詢並且沒有篩選器時仍然調用帶有篩選器(從PrunedFilteredScan繼承)的函數。
請接受你的答案:) –