6

原标题:除了HDFS,spark还支持哪些DFS(推荐)?

我很高兴将 spark 和 elasticsearch(带有 elasticsearch-hadoop 驱动程序)与几个巨大的集群一起使用。

有时,我想将整个数据集群拉出来,处理每个文档,然后将它们全部放入不同的 Elasticsearch (ES) 集群中(是的,数据迁移也是如此)。

目前,没有办法将集群中的 ES 数据读取到 RDD 中,并使用 spark + elasticsearch-hadoop 将 RDD 写入另一个 RDD,因为这将涉及SparkContext从 RDD 交换。所以我想将 RDD 写入目标文件,然后再将它们读回具有不同SparkContexts 的 RDD。

然而,问题来了:然后我需要一个 DFS(分布式文件系统)来在我的整个 spark 集群中共享大文件。最流行的解决方案是 HDFS,但我会非常避免将 Hadoop 引入我的堆栈。spark支持的还有其他推荐的DFS吗?

下面更新

感谢@Daniel Darabos 在下面的回答,我现在可以使用以下 Scala 代码在不同的 ElasticSearch 集群中读写数据:

val conf = new SparkConf().setAppName("Spark Migrating ES Data")
conf.set("es.nodes", "from.escluster.com")

val sc = new SparkContext(conf)

val allDataRDD = sc.esRDD("some/lovelydata")

val cfg = Map("es.nodes" -> "to.escluster.com")
allDataRDD.saveToEsWithMeta("clone/lovelydata", cfg)
4

1 回答 1

3

Spark 使用 hadoop-common 库进行文件访问,因此 Hadoop 支持的任何文件系统都可以与 Spark 一起使用。我已经将它与 HDFS、S3 和 GCS 一起使用。

我不确定我是否理解您为什么不只使用elasticsearch-hadoop. 您有两个 ES 集群,因此您需要使用不同的配置访问它们。sc.newAPIHadoopFile并提出rdd.saveAsHadoopFile论据hadoop.conf.Configuration。所以你可以毫无问题地使用两个相同的 ES 集群SparkContext

于 2015-03-12T12:17:36.853 回答