java spark es_JavaSpark写RDD到ES时指定文档ID的

spark版本:2.3

ES版本:7.1

问题描述:

在通过JavaSpark写入数据到ES过程中,需要对文档id进行手动指定。

在查询ES官网之后,返现官网介绍中是有次方法的:

d4da08673735ac5ffe5ff0742ed5df61.png

可以看到,JavaEsSpark.saveToEs该方法是有一个这样的构造方法,需要传入一个ImmutableMap参数

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

其中"id"即为RDD中的存在的某个字段

问题:

在使用该方法的时候,我试图传一个这个方法进去,发现类型不对,试了各种方式,都是不行,最后发现这里是需要的一个scala类型的map类型,问题表象如下:

36784a27d2f717195d469d453cbc1e48.png

解决:

既然不行,程序需要的是一个scala类型的map,那我就给它传一个这样的类型进去,但是在java中直接创建一个scala类型的map是不那么好搞的,所以需要想办法将java类型的map转换为scala类型的map。

此时是,我单独写了一个工具类,转么就是将java类型的map转换为scala类型的map:

最终实现方式:

fecfd914599ccf3d3cc9d6a1f87c9c94.png

在此记录,希望对遇到同样问题的砖友有帮助

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值