【问题标题】:Google Cloud Spark ElasticSearch TransportClient connection exceptionGoogle Cloud Spark ElasticSearch TransportClient 连接异常
【发布时间】:2016-08-26 15:37:57
【问题描述】:

我在 Google Cloud 上使用 Spark,我使用以下代码连接到 Elasticsearch 数据库

 import org.elasticsearch.action.search.SearchResponse;
 import org.elasticsearch.client.transport.TransportClient;
 import org.elasticsearch.common.settings.Settings;
 import org.elasticsearch.common.transport.InetSocketTransportAddress;
 import org.elasticsearch.index.query.QueryBuilders;
 import org.elasticsearch.search.SearchHit;


 public  TransportClient openConnection(String ipAddress, int ipPort) throws UnknownHostException {

    Settings settings = Settings.settingsBuilder().put("cluster.name", "elasticsearch").build();
    TransportClient client = TransportClient.builder().settings(settings).build().
            addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(ipAddress), ipPort));

    return client;

}

当我在本地运行它时,即spark-submit --master local[*] 一切运行正常。当我在谷歌云火花集群中运行它时,我得到以下异常:

 java.lang.NoClassDefFoundError: Could not initialize class org.elasticsearch.threadpool.ThreadPool
at org.elasticsearch.client.transport.TransportClient$Builder.build(TransportClient.java:131)
at javaTools.ElasticSearchConnection.openConnection(ElasticSearchConnection.java:24)

最后提到的方法(openConnection)是上面描述的连接。

代码使用使用 sbt asssembly 创建的 fat jar 上传到谷歌云,因此使用的所有库都是通用的,除了本机 java 库。

我认为这可能是一些库依赖,因为同一个 jar 在我的本地计算机上运行良好,并且它能够连接到 ElasticSearch 服务器,但同一个 jar 无法在 Google 云上的 spark 集群上运行。 Spark 的本地和云版本都是相同的,1.6.0。

【问题讨论】:

  • 如果你运行jar tf your-jarfile.jar | grep ThreadPool,你看到类文件org/elasticsearch/threadpool/ThreadPool.class了吗?通常,本地开发环境可能会被隐藏缺少的 fatjar 依赖项的依赖项污染;您是否尝试过完全干净的环境,在干净的环境(例如,新的本地或云虚拟机)中下载全新的 Spark tarball 并在那里运行相同的 spark-submit --master local

标签: elasticsearch apache-spark google-cloud-dataproc


【解决方案1】:

问题是由于 Spark 和 Elasticsearch 中使用的 Guava 库冲突引起的。解决方法可以找到in this StackOverflow question

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-30
    • 1970-01-01
    • 2020-04-27
    相关资源
    最近更新 更多