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

    最终实现方式:

      

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

  • 相关阅读:
    [转] Spring
    测试公式
    lexicalized Parsing
    MLN Alchemy
    Pedro domingos
    MLE & MAP
    Learning
    ProbCog mlnlearn的探索
    MLN 讨论 —— inference
    Mathjax与LaTex公式简介
  • 原文地址:https://www.cnblogs.com/Gxiaobai/p/14193658.html
Copyright © 2011-2022 走看看