当前位置: 首页 > 知识库问答 >
问题:

在独立模式下使用spark实现elasticsearch的索引

海鸣
2023-03-14
SparkConf conf = new SparkConf().setMaster("local")
            .setAppName("Indexer").set("spark.driver.maxResultSize", "2g");
    conf.set("es.index.auto.create", "true");
    conf.set("es.nodes", "localhost");
    conf.set("es.port", "9200");
    conf.set("es.write.operation", "index");
    JavaSparkContext sc = new JavaSparkContext(conf);
    Map<String, ?> numbers = ImmutableMap.of("one", 1, "two", 2);
    Map<String, ?> airports = ImmutableMap.of("OTP", "Otopeni", "SFO", "San Fran");

    JavaRDD<Map<String, ?>> javaRDD = jsc.parallelize(ImmutableList.of(doc1, doc2));
    JavaEsSpark.saveToEs(javaRDD, "spark/docs");      

我试着在本地写文件,这是工作良好的....可能是配置中的问题。

这些是pom.xml中的依赖项

<dependencies>
    <dependency>
        <groupId>org.elasticsearch</groupId>
        <artifactId>elasticsearch</artifactId>
        <version>2.1.0</version>
    </dependency>
    <!-- <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> 
        <version>2.6.4</version> </dependency> -->
    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-core_2.10</artifactId>
        <version>1.5.1</version>
    </dependency>
    <dependency>
        <groupId>org.elasticsearch</groupId>
        <artifactId>elasticsearch-spark_2.10</artifactId>
        <version>2.1.0</version>
    </dependency>

</dependencies>                               

共有1个答案

叶鸿
2023-03-14

stacktrace中的相关行是:

java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:-1在java.lang.String.SubString(String.java:1967)在...

此错误不是来自您的代码。这是由于elasticsearch版本与您正在使用的elasticsearch-hadoop适配器不兼容造成的。版本为2.0.x和2.1.x的elasticsearch-hadoop适配器仅可用于ElasticSearch1.x。我在使用elasticsearch 2.1.1时遇到了同样的错误,因此不得不将我的elasticsearch版本降级到1.4.4。错误消失了。

 类似资料:
  • 我正在以客户端部署模式的独立模式运行Apache Spark 2.1.1。我想为主服务器和所有工作人员禁用 Spark 网页 UI。 参考:https://spark.apache.org/docs/latest/configuration.html#spark-ui 和在$SPARK_HOME/conf/spark-defaults.conf中的以下配置使用: 然而,我仍然可以在默认端口8080

  • 我已经在我的本地安装了mesos,并按照mesos设置中提到的进行了配置。现在我想在本地机器上安装的mesos上运行spark。我已经根据官方文档配置了spark,并在我的本地机器上运行了单节点hadoop集群。Spark二进制包被复制到hdfs根目录,我已经在spark-env.sh中设置了以下属性: 是Spark-Defaults.conf:

  • 如何确定spark独立群集模式上的工作线程数?在独立群集模式下添加工作线程时,持续时间将缩短。 例如,对于我的输入数据3.5 G,WordCount需要3.8分钟。但是,在我添加了一个内存为4 G的工作器后,需要2.6分钟。 增加调谐火花的工人可以吗?我正在考虑这方面的风险。 我的环境设置如下:, 内存128克,16个CPU,用于9个虚拟机 输入数据信息 HDFS中的3.5 G数据文件

  • /usr/local/spark-1.2.1-bin-hadoop2.4/bin/--类com.fst.firststep.aggregator.firststepmessageProcessor--主spark://ec2-xx-xx-xx-xx.compute-1.amazonaws.com:7077--部署模式集群--监督文件:///home/xyz/sparkstreaming-0.0.1

  • 抛出错误 到目前为止,我在Hadoop中只有start-dfs.sh,在Spark中并没有真正配置任何内容。我是否需要使用YARN集群管理器来运行Spark,以便Spark和Hadoop使用相同的集群管理器,从而可以访问HDFS文件? 我尝试按照tutorialspoint https://www.tutorialspoint.com/Hadoop/hadoop_enviornment_setup

  • 我在独立的Kubernetes(sesion)模式下运行Apache Flink,没有作业管理器HA。但我需要部署作业管理器HA,因为只有在HA模式下,Flink才能持久化(可以在作业管理器重新启动后保存作业)。Flink在专用的kubernetes命名空间中运行,我只对该命名空间拥有权限。 使用本文启用HA:https://ci.apache.org/projects/flink/flink-d