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
最終實現方式:
在此記錄,希望對遇到同樣問題的磚友有幫助