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
最终实现方式:
在此记录,希望对遇到同样问题的砖友有帮助