zoukankan      html  css  js  c++  java
  • 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

    最终实现方式:

      

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

  • 相关阅读:
    HDU
    HDU-1166 敌兵布阵 (基础线段树)
    Matrices with XOR property (暴力)
    CF-825E Minimal Labels (反向拓扑)
    CodeForces-1144E Median String (模拟)
    操作文件和目录
    文件读写
    装饰器
    数据结构和算法
    Scrapy shell调试返回403错误
  • 原文地址:https://www.cnblogs.com/Gxiaobai/p/14193658.html
Copyright © 2011-2022 走看看