JavaSpark寫RDD到ES時指定文檔ID的

spark版本:2.3

ES版本:7.1

問題描述:

  在通過JavaSpark寫入數據到ES過程中,需要對文檔id進行手動指定。

  在查詢ES官網之後,返現官網介紹中是有次方法的:

  

 

   可以看到,JavaEsSpark.saveToEs該方法是有一個這樣的構造方法,需要傳入一個ImmutableMap參數

  ImmutableMap.of("es.mapping.id","id")

  其中"id"即爲RDD中的存在的某個字段

問題:

  在使用該方法的時候,我試圖傳一個這個方法進去,發現類型不對,試了各種方式,都是不行,最後發現這裏是需要的一個scala類型的map類型,問題表象如下:

 

 解決:

  既然不行,程序需要的是一個scala類型的map,那我就給它傳一個這樣的類型進去,但是在java中直接創建一個scala類型的map是不那麼好搞的,所以需要想辦法將java類型的map轉換爲scala類型的map。

  此時是,我單獨寫了一個工具類,轉麼就是將java類型的map轉換爲scala類型的map:

  該工具類具體實現可參見 :javaMapConvertToScalaMap

最終實現方式:

  

 

 

在此記錄,希望對遇到同樣問題的磚友有幫助

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章