首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用于PySpark 3.1.1的Elasticsearch插件

用于PySpark 3.1.1的Elasticsearch插件
EN

Stack Overflow用户
提问于 2021-03-27 08:24:11
回答 1查看 165关注 0票数 0

我成功地在PySpark 2.4.5中使用了Elasticsearch Spark 7.12.0。读写都很完美。现在,我正在测试升级到Spark 3.1.1,这个集成不再起作用了。在2.4.5和3.1.1之间,PySpark中没有代码更改。

有兼容的插件吗?有没有人把这个用在PySpark 3.1.1上?

错误:

EN

回答 1

Stack Overflow用户

发布于 2021-06-09 20:07:17

尝试使用package org.elasticsearch:elasticsearch-spark-30_2.12:7.13.1

您看到的错误(java.lang.NoClassDefFoundError: scala/Product$class)通常表示您正在尝试使用为不兼容版本的Scala构建的包。

如果您使用的是来自Elasticsearch的最新压缩包,那么在您提出问题时,它仍然是为Scala v11构建的,就像这里的对话:https://github.com/elastic/elasticsearch-hadoop/pull/1589

您可以通过执行以下操作来确认用于构建PySpark的Scala版本

spark-submit --version

从命令行。在Spark徽标之后,它将显示如下内容

Using Scala version 2.12.10

你需要看看这个页面:https://www.elastic.co/guide/en/elasticsearch/hadoop/current/install.html在这个页面上你可以看到兼容性矩阵。

Elastic在这里为你提供了一些关于Hadoop的安装信息:https://www.elastic.co/guide/en/elasticsearch/hadoop/current/install.html

对于Spark,它提供了以下功能:

代码语言:javascript
复制
<dependency>
 <groupId>org.elasticsearch</groupId>
 <artifactId>elasticsearch-spark-30_2.12</artifactId> 
 <version>7.14.0</version>
</dependency>

现在,如果您使用的是PySpark,那么您可能不熟悉Maven,所以我可以理解,提供maven依赖项并不是很有帮助。

这里有一个让maven为您获取jar的最小方法,而不必纠结于一个不熟悉的工具。

安装maven (apt install maven)

创建一个新目录

在该目录中,创建一个名为pom.xml的文件

代码语言:javascript
复制
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>spark-es</groupId>
<artifactId>spark-esj</artifactId>
<version>1</version>
<dependencies>
    <dependency>
        <groupId>org.elasticsearch</groupId>
        <artifactId>elasticsearch-spark-30_2.12</artifactId>
        <version>7.14.0</version>
    </dependency>
</dependencies>

保存该文件并创建一个名为"targetdir“的附加目录(它可以是任何名称)

然后

代码语言:javascript
复制
mvn dependency:copy-dependencies -DoutputDirectory=targetdir

您将在targetdir中找到您的jar。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66825892

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档