Как вы читаете и пишете из / в разные кластеры ElasticSearch, используя spark и asticsearch-hadoop?

Оригинальное название: Помимо HDFS, какие еще DFS поддерживает spark (и рекомендуется)?

Я с радостью использую spark и asticsearch (с драйвером asticsearch-hadoop) с несколькими гигантскими кластерами.

Время от времени я хотел бы вытащить весь кластер данных, обработать каждый документ и поместить их все в другой кластер Elasticsearch (ES) (да, миграция данных тоже).

В настоящее время нет способа считывать данные ES из кластера в RDD и записывать RDD в другой файл с помощью spark +asticsearch-hadoop, поскольку это может привести к обмену SparkContext из РДД. Поэтому я хотел бы записать RDD в объектные файлы, а затем прочитать их обратно в RDD с различными SparkContexts.

Однако возникает проблема: мне нужна DFS (распределенная файловая система) для совместного использования больших файлов по всему моему спарк-кластеру. Наиболее популярным решением является HDFS, но я бы очень не хотел вводить Hadoop в свой стек. Есть ли другие рекомендуемые DFS, которые поддерживает спарк?

Обновление ниже

Благодаря ответу @Daniel Darabos, приведенному ниже, теперь я могу читать и записывать данные из / в различные кластеры ElasticSearch, используя следующий код Scala:

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)

1 ответ

Решение

Spark использует общую библиотеку hadoop для доступа к файлам, поэтому любые файловые системы, поддерживаемые Hadoop, будут работать со Spark. Я использовал его с HDFS, S3 и GCS.

Я не уверен, что понимаю, почему вы не просто используете elasticsearch-hadoop, У вас есть два кластера ES, поэтому вам нужно получить к ним доступ с разными конфигурациями. sc.newAPIHadoopFile а также rdd.saveAsHadoopFile принимать hadoop.conf.Configuration аргументы. Таким образом, вы можете без проблем использовать два кластера ES с одинаковыми SparkContext,

Другие вопросы по тегам