2015-01-11 15 views
5

Tôi muốn chạy các truy vấn Spark SQL trong dịch vụ web an toàn của mình, Vì vậy, Làm thế nào tôi có thể chạy Ngữ cảnh Spark qua ngữ cảnh Jersey? Tôi cần chuyển yêu cầu Spark SQL của mình đến cluster sau đó trả về kết quả cho người dùng thông qua REST API. Nhưng trong tài liệu Spark, không có cách nào để chạy các truy vấn SQL Spark trong mã java mà không gửi tệp jar tới cụm (master/slaves).Làm thế nào để gọi công việc spark trong ngữ cảnh của dịch vụ Web REST?

Trả lời

4

Nếu bạn đang sử dụng phiên bản Spark> 1.4 thì bạn có thể sử dụng SparkLauncher để chạy ứng dụng của mình.

import org.apache.spark.launcher.SparkLauncher; 

public class MyLauncher { 
    public static void main(String[] args) throws Exception { 
    Process spark = new SparkLauncher() 
     .setAppResource("/my/app.jar") 
     .setMainClass("my.spark.app.Main") 
     .setMaster("local") 
     .setConf(SparkLauncher.DRIVER_MEMORY, "2g") 
     .launch(); 
    spark.waitFor(); 
    } 
} 

Để nó hoạt động, bạn nên cung cấp tệp jar. Vì bạn muốn chạy một truy vấn SparkSQL sau đó bạn có thể đóng gói nó trong một tệp jar đơn lẻ hoặc bạn có thể có một bình lấy tham số truy vấn bạn muốn thực hiện.

Thông báo trước là bạn phải bắt đầu ngừng SparkContext mỗi lần bạn muốn thực hiện truy vấn. Nếu bạn không bận tâm chờ đợi thì nó vẫn ổn. Nhưng nếu thời gian là một điều lớn thì tôi sẽ khuyên bạn nên viết một dịch vụ riêng biệt mà sẽ có bối cảnh tia lửa luôn luôn lên và ứng dụng của bạn sẽ thực hiện cuộc gọi đến nó.

+1

Tôi chỉ nhận ra rằng câu hỏi là khá cũ, nhưng vì nó chưa được trả lời và ai đó có thể có cùng một câu hỏi tôi đã trả lời nó! – MitsakosGR

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