什么是让Spark工作在专有分布式数据库上的最佳方法? (RDD或FileInputFormat)

时间:2014-10-28 18:23:31

标签: apache-spark rdd

我们有一些分布式数据存储。我们知道所有内部结构,可以直接在磁盘上访问数据。

我正在研究直接在其上部署Apache Spark的选项。

最佳/推荐的方法是什么?

  • 编写自定义RDD (源自RDD)
  • 或者,通过扩展FileInputFormat

(一个比另一个更容易吗?更好的表现等等)

感谢您的帮助

2 个答案:

答案 0 :(得分:3)

我会选择CustomRDD。作为参考,你可以看看datastax-cassandra-driver,他们有很好的为分布式数据库编写自定义RDD的例子

https://github.com/datastax/spark-cassandra-connector/blob/master/spark-cassandra-connector/src/main/scala/com/datastax/spark/connector/rdd/CassandraRDD.scala

但据我所知,他们并不打算从磁盘加载数据,他们使用Cassandra的分区信息来分割RDD本身。但是,支持你需要的东西应该相对简单。

答案 1 :(得分:3)

Spark 1.2将包含一个用于Spark SQL的新外部数据源API。这样可以轻松编写用于加载(半)结构化数据的新输入连接器并从SQL查询它,并且可以使用钩子来启用特定于数据源的查询优化,例如分区修剪或谓词下推。即使您没有使用Spark SQL查询数据(例如,您想使用常规RDD API),这可能是加载它的最简单方法,因为您可以在SchemaRDD上执行常规的Spark转换。

以下是了解有关此API的更多信息的一些资源: