我尝试运行Spark应用程序来集成HBase和ES。我尝试在ES中创建索引并存储HBase中的数据,但在连接ES服务器时收到“用户未经授权或访问被拒绝”的问题。
我已经检查了运营团队并反弹ES服务器,尝试运行应用程序并得到附加的异常-**Exception in thread“main”org.elasticsearch.hadoop. EsHadoop IllegalArgumentException:无法检测ES版本-通常在以下情况下会发生这种情况:无法访问网络/Elasticsearch群集,或者在org.elasticsearch.hadoop.rest.InitializationUtils.discoverEsVersion(InitializationUtils.java:327)的org.elasticsearch.spark.rdd.EsSpark$.doSaveToEs(EsSpark.scala:103)at org.elasticsearch.spark. rdd.EsSpark$.saveToEs(EsSpark.scala:79)at org.elasticsearch.spark. rdd. EsSpark$. saveToEs(EsSpark.scala:74)at org.elasticsearch.spark.package$SparkRDDFunctions.saveToEs(package.scala:(第五十五条)
我正在使用Elasticsearch 6.1.1 v。如果有人遇到这个问题并清除了异常,请告诉我
2条答案
按热度按时间ej83mcc01#
当使用Spark应用程序将数据加载到Elasticsearch时,您可能会遇到身份验证问题,因为Elasticsearch版本6.x及更高版本使用SSL证书进行身份验证。要解决此问题,您可以按照以下步骤操作:
先决条件:
1.生成***JKS***文件
1.生成***PEM***文件
解析步骤:
1.使用以下命令生成SSL证书:
keytool -keystore <jks-file> -import -file <pem-file>
1.使用以下命令验证是否生成了证书:
keytool -list -v -keystore <jks-file>
1.使用Spark参数***driver-java-options***提供SSL证书路径如下:
--driver-java-options="-Djavax.net.ssl.trustStore=<jks-file-location> -Djavax.net.ssl.trustStorePassword=<trust-store-pwd"
通过以下步骤,您的Spark应用程序可以成功地与Elasticsearch集群进行身份验证以进行数据加载。
nkoocmlb2#
谢谢大家尝试这个问题,我已经确定了这个问题。如果你遇到类似的问题,它可能会对你有帮助。
问题是我们覆盖了mapr -/opt/mapr/spark/spark-2.1.0/conf中的spark默认配置
而我们在应用程序中传递的spark配置无法绑定到sparkConfig。所以它在索引创建期间指向本地主机(127.0.0.1:9200)-如果遇到这个问题,请检查异常日志
我已经在应用程序中更改了配置细节,并在创建sparkSession对象时传递了这些细节,并且我已经测试了应用程序。
现在,应用程序工作正常,我可以在Elastic Search中创建索引并加载数据。
创建sparkSession时传递了sparkConfig:
**
**
Thank you.