4

我们有某种分布式数据存储。我们了解所有内部结构,可以直接访问磁盘上的数据。

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

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

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

(一个比另一个更容易?更好的性能?等等)

谢谢你的帮助

4

2 回答 2

3

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

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

于 2014-11-02T18:15:39.073 回答
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 本身进行分区。但是,支持您需要的内容应该相对简单。

于 2014-10-28T19:33:44.477 回答