amazon-web-services - 无法从 Spark 连接到 AWS Elasticsearch
问题描述
我需要使用 AWS 访问/密钥从我的 Spark 应用程序(结构化流)连接到 AWS Elasticsearch 服务。例如,S3 和 Spark 集成有一种方法可以在配置中设置访问/密钥https://docs.databricks.com/spark/latest/data-sources/aws/amazon-s3.html
我找不到任何与 Elasticsearch 等效的东西。我尝试了下面的代码,但没有奏效。
val writer = input.write
.option("es.nodes",serverUrl)
.option("es.net.https.auth.user", awsAccessKeyId)
.option("es.net.https.auth.pass", awsSecretAccessKey)
.option("es.nodes.wan.only", "true")
.format("org.elasticsearch.spark.sql")
writer.save("index/mapping")
看起来“es.net.https.auth.xxx”用于基本身份验证。我正在寻找 AWS 特定的。任何信息表示赞赏!
解决方案
awsAccessKeyId
awsSecretAccessKey
如果您有权访问您的 spark 集群,那么您的 spark 会话将被传播。
测试是,使用 spark shell 尝试从 s3 读取存储桶,其中包含示例 parquet 文件。
http auth 用户和密码是占位符es.net.https.auth.user
es.net.https.auth.pass
例如,如果您要连接到 mysql(RDS 是 aws),则需要分别传递 jdbc 用户和密码。类似的术语你的http认证也是这样的。
结论 :
根据我的经验,没有必要单独提供 awsAccessKeyId awsSecretAccessKey,因为它暗示您可以从 EMR 集群访问它。
注意:如果您想要或必须真正设置访问凭据,您需要设置如下......
val hadoopConf = sc.hadoopConfiguration;
hadoopConf.set("fs.s3.impl", "org.apache.hadoop.fs.s3native.NativeS3FileSystem")
hadoopConf.set("fs.s3.awsAccessKeyId", myAccessKey)
hadoopConf.set("fs.s3.awsSecretAccessKey", mySecretKey)
不喜欢
.option("es.net.https.auth.user", awsAccessKeyId)
推荐阅读
- drools - Optaplanner:试图理解护士排班示例中不需要的模式规则
- python - 从不规则间隔的向量中选择近似规则的样本
- ms-access - Microsoft.Office.Interop.Word.Application COM 错误
- c - C. ASCII 十六进制值数组的校验和计算
- java - 对 Xodus 的非独占读取访问权限
- python - 验证输入并检查它是否在一个范围内
- java - Hybris 表单组件验证
- mysql - mySQL-将具有相同列值的两个表组合并比较开始日期和结束日期
- asp.net - ASP.NET 中多个浏览器选项卡中的不同会话
- angular - 动态更改选择值