Apache Spark 中有没有办法创建一个 Spark SQL 代理表,该表仅代理底层(自定义)数据源?
我有一个自定义数据源,它通过实现org.apache.spark.sql.sources.PrunedFilteredScan
来支持谓词下推,现在我想对该数据源使用 Spark SQL,其中筛选器谓词通过(下推)到数据源。将数据源注册为普通临时表(使用sqlContext.read.format("mydatasource").load().createOrReplaceTempView("myTable")
)不是一种选择,因为这最终会将所有数据拉取到 Spark 中。
临时视图(Dataset.createTempView
和Dataset.createOrReplaceTempView
)和外部表(2.2 之前的Catalog.createExternalTable
,Catalog.createTable
2.2 之后)都不应该将所有数据拉入 Spark,所有这些选项都支持与底层源代码相同程度的乏味下推。