我需要使用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
如果您可以通过aws访问您的spark集群,则将与spark会话一起传播。
测试是,使用Spark Shell尝试从s3中读取包含示例镶木地板文件的存储桶。
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)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句