2017-10-11 228 views
0

我很新奇。我用SPARK工作制作了一個具有大約420MB數據的文件。我有一個Java應用程序,它只需要根據特定條件從該文件併發查詢數據並以json格式返回數據。 到目前爲止,我已經找到了SPARK 2個RESTful API中,但它們只用於遠程提交SPARK的工作和管理SPARK環境,通過RESTful API查詢SPARK作業生成的數據

1)Livy 
2)Spark job-server 

如果可用,什麼是做同樣的(除了數據庫)其他選擇嗎?

回答

1

實際上,您可以使用Livy以RESTful的方式將結果恢復爲友好的JSON!

session_url = host + "/sessions/1" 
statements_url = session_url + '/statements' 
data = { 
     'code': textwrap.dedent("""\ 
     val d = spark.sql("SELECT COUNT(DISTINCT food_item) FROM food_item_tbl") 
     val e = d.collect 
     %json e 
     """)} 
r = requests.post(statements_url, data=json.dumps(data), headers=headers) 
print r.json() 

我參考答案:Apache Livy: query Spark SQL via REST: possible?

相關:Livy Server: return a dataframe as JSON?

+0

感謝蓋倫。是否有任何大小或長度限制的JSON創建在這種方法可以發回到應用程序 –

+0

我不知道是否有一個大小的限制,但有一些固有的限制,因爲它必須做一個「收集」結果返回給驅動程序。如果你有時間等待它建立並返回一百萬行的結果,它可能很有必要;) – Garren

+0

我在'postman'的請求主體中發佈數據爲'{「code」:「textwrap.dedent(\ \「\」 val d = spark.sql(\「SELECT COUNT(DISTINCT food_item)FROM food_item_tbl \」) val e = d.collect \%json e \「\」\「)}'。不工作。我在這裏丟失了一些東西 –