2015-03-12 14 views
6

Tiêu đề gốc: Bên cạnh HDFS, những gì DFS khác hỗ trợ (và được đề xuất)?Làm thế nào để bạn đọc và viết từ/vào các cụm ElasticSearch khác nhau bằng cách sử dụng tia lửa và elasticsearch-hadoop?

Tôi vui vẻ sử dụng tia lửa và elasticsearch (với trình điều khiển elasticsearch-hadoop) với một số cụm khổng lồ.

Thỉnh thoảng, tôi muốn kéo toàn bộ cụm dữ liệu ra, xử lý từng tài liệu và đặt tất cả chúng vào một cụm Elasticsearch (ES) khác (có, di chuyển dữ liệu quá).

Hiện tại, không có cách nào để đọc dữ liệu ES từ cụm vào RDD và ghi RDD vào một nhóm khác với spark + elasticsearch-hadoop, vì điều đó sẽ liên quan đến việc hoán đổi SparkContext từ RDD. Vì vậy, tôi muốn viết RDD vào các tệp đối tượng và sau đó đọc chúng trở lại RDD với các khác nhau SparkContext s.

Tuy nhiên, đây là vấn đề: sau đó tôi cần một DFS (Hệ thống tệp phân tán) để chia sẻ các tệp lớn trên toàn bộ cụm tia lửa của tôi. Giải pháp phổ biến nhất là HDFS, nhưng tôi rất tránh giới thiệu Hadoop vào ngăn xếp của tôi. Có bất kỳ DFS được khuyến nghị nào khác hỗ trợ không?

Update Dưới đây

Nhờ câu trả lời @Daniel Darabos của dưới đây, tôi bây giờ có thể đọc và ghi dữ liệu từ/vào cụm ElasticSearch khác nhau sử dụng mã Scala sau:

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) 

Trả lời

3

Spark sử dụng Hadoop - thư viện phổ biến để truy cập tệp, vì vậy bất kỳ hệ thống tệp nào mà Hadoop hỗ trợ sẽ hoạt động với Spark. Tôi đã sử dụng nó với HDFS, S3 và GCS.

Tôi không chắc mình hiểu tại sao bạn không chỉ sử dụng elasticsearch-hadoop. Bạn có hai cụm ES, vì vậy bạn cần truy cập chúng với các cấu hình khác nhau. sc.newAPIHadoopFilerdd.saveAsHadoopFile lấy hadoop.conf.Configuration đối số. Vì vậy, bạn có thể mà không có bất kỳ vấn đề sử dụng hai cụm ES với cùng một SparkContext.

+1

cảm ơn phản hồi. Tôi đang sử dụng các hàm read (sc.esRDD) và write (rss.saveToEs) mới được elasticsearch-hadoop đề xuất. Không có cách nào để đọc và viết từ các cụm khác nhau theo cách này. Cảm ơn bạn đã đưa rdd.saveAsHadoopFile lên, tôi đang xem xét nó để xem bằng cách nào đó tôi có thể đi từ đó. –

+1

Ah, tôi không biết về các phương thức này ('esRDD' và' saveToEs'). Tôi thấy họ lấy một đối số 'cfg: Map [String, String]'. Có thể không được sử dụng để cung cấp các cấu hình khác nhau cho việc đọc và viết không? –

+1

cảm ơn bạn đã cập nhật. Tôi đã là một tên ngốc để bỏ qua cfg. Nó hoạt động !! Tôi sẽ cập nhật nút của tôi lên câu hỏi cho mọi người. Cảm ơn một lần nữa. –

Các vấn đề liên quan