如何实现一个spark数据源(基于spark 1.6.1)
简介
spark data source API是一套接口,让开发者可以通过实现这些接口,从而将存储在磁盘(或者hdfs whatever)上的各种格式的数据转化为DataFrame;或者将DataFrame写为各种格式的数据保存起来。
这些接口定义在:
sql/core/src/main/scala/org/apache/spark/sql/sources/interfaces.scala
一般来讲,所有的数据源都要实现以下三个接口:
- BaseRelation 代表了一个抽象的数据源。该数据源由一行行有着已知schema的数据组成(关系表)。
- TableScan 用于扫描整张表,将数据返回成RDD[Row]。
- RelationProvider 顾名思义,根据用户提供的参数返回一个数据源(BaseRelation)。
当然,spark也提供了其他接口来丰富你的数据源的功能, 这些都可以在上述的文件中找到相应的描述。比如PrunedFilteredScan接口,spark将需要的行和列传入,那么你的数据源就可以根据这些信息过滤掉不需要的行和列。如果某些表达式无法处理&