Pyspark-从EMR上的Elasticsearch集群读取数据

时间:2018-11-28 06:55:21

标签: amazon-web-services apache-spark authentication elasticsearch pyspark

我正在尝试从pyspark的elasticsearch读取数据。我在Spark中使用elasticsearch-hadoop api。 es群集位于aws emr上,这需要凭据才能登录。我的脚本如下:

from pyspark import SparkContext, SparkConf sc.stop() 
conf = SparkConf().setAppName("ESTest") sc = SparkContext(conf=conf) 
es_read_conf = { "es.host" : "vhost", "es.nodes" : "node", "es.port" : "443",
"es.query": '{ "query": { "match_all": {} } }',
"es.input.json": "true", "es.net.https.auth.user": "aws_access_key", 
"es.net.https.auth.pass": "aws_secret_key", "es.net.ssl": "true", 
"es.resource" : "index/type", "es.nodes.wan.only": "true" 
}

es_rdd = sc.newAPIHadoopRDD( inputFormatClass="org.elasticsearch.hadoop.mr.EsInputFormat", 
keyClass="org.apache.hadoop.io.NullWritable", 
valueClass="org.elasticsearch.hadoop.mr.LinkedMapWritable", conf=es_read_conf)

Pyspark不断抛出错误:

  

py4j.protocol.Py4JJavaError:调用时发生错误   z:org.apache.spark.api.python.PythonRDD.newAPIHadoopRDD。

     

:org.elasticsearch.hadoop.rest.EsHadoopInvalidRequest:[HEAD] on   [索引]失败; servernode:443]返回了[403 | Forbidden:]

我检查了除用户和密码条目以外所有有意义的内容,aws的访问密钥和秘密密钥在这里起作用吗?为了安全起见,我们不想在此处使用控制台用户和密码。做同一件事有其他方法吗?

0 个答案:

没有答案