2015-03-12 9 views
6

Oryginalny tytuł: Oprócz HDFS, jakie inne DFS obsługuje wsparcie (i czy jest rekomendowany)?Jak odczytujesz i piszesz z różnych klastrów ElasticSearch za pomocą isoop iskry i elastycznego wyszukiwania?

Z przyjemnością używam iskry i elastycznego wyszukiwania (z elastycznym wyszu- kiwaczem-maczkiem) z kilkoma gigantycznymi klastrami.

Od czasu do czasu chciałbym wyciągnąć cały zestaw danych, przetworzyć każdy dokument i umieścić wszystkie w innym klastrze Elasticsearch (ES) (tak, migracja danych również).

Obecnie nie ma sposobu, aby odczytać dane ES z klastra do RDD i zapisać RDD na inny z iskry + elastycznego przeszukiwania, ponieważ wymagałoby to zamiany SparkContext z RDD. Chciałbym napisać RDD do plików obiektowych, a następnie odczytywać je z powrotem do RDD z różnymi SparkContext s.

Jednak pojawia się problem: potrzebuję wtedy systemu plików DFS (Distributed File System), aby udostępnić duże pliki w całym klastrze. Najpopularniejszym rozwiązaniem jest HDFS, ale bardzo bym unikał wprowadzania Hadoop do mojego stosu. Czy jest jakiś inny zalecany DFS, który obsługuje iskry?

Aktualizacja Poniżej

Dzięki odpowiedź @Daniel DARABOS jest poniżej, mogę teraz odczytywać i zapisywać dane z/na różnych klastrach ElasticSearch stosując następujący kod 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) 

Odpowiedz

3

Spark używa Hadoop -społeczna biblioteka dostępu do plików, więc niezależnie od tego, jakie systemy plików obsługuje Hadoop, będzie współpracować ze Spark. Używałem go z HDFS, S3 i GCS.

Nie jestem pewien, czy rozumiem, dlaczego nie używasz tylko elasticsearch-hadoop. Masz dwa klastry ES, więc musisz uzyskać do nich dostęp w różnych konfiguracjach. Argumenty: sc.newAPIHadoopFile i rdd.saveAsHadoopFile. Dzięki temu możesz bez problemu korzystać z dwóch klastrów ES z tym samym SparkContext.

+1

dzięki za odpowiedź. Używam nowych funkcji read (sc.esRDD) i write (rss.saveToEs) zaproponowanych przez elasticsearch-hadoop. W ten sposób nie można czytać i pisać z różnych klastrów. Dzięki za wniesienie pliku rdd.saveAsHadoopFile, patrzę na to, aby zobaczyć, czy mogę jakoś stamtąd wyjść. –

+1

Ah, nie wiedziałem o tych metodach ('esRDD' i' saveToEs'). Widzę, że biorą argument "cfg: Map [String, String]". Czy nie można tego użyć do zapewnienia różnych konfiguracji czytania i pisania? –

+1

dzięki za aktualizację. Byłem takim idiotą, aby ignorować cfg. To działa!! Zaktualizuję swój węzeł do pytania dla wszystkich. Dzięki jeszcze raz. –

Powiązane problemy