1、创建spark与elasticsearch的连接
需要使用elasticsearch的依赖包,elasticsearch-spark-20_2.11-7.5.1.jar,注意版本要与elasticsearch保持一致
2、spark写入elasticsearch
from collections import OrderedDict
# 将结果写入es
options = OrderedDict()
options['es.nodes'] = 'your_ip'
options['es.port'] = '9200'
options['es.resource'] = '索引/索引类型'
# 连接es的超时时间设置。默认1m
options['es.http.timeout'] = '10000m'
options['es.nodes.wan.only'] = 'true'
# 默认重试3次,为负值的话为无限重试(慎用)
options['es.batch.write.retry.count'] = '15'
# 默认重试等待时间是 10s
options['es.batch.write.retry.wait'] = '60'
# 以下参数可以控制单次批量写入的数据量大小和条数(二选一)
options['es.batch.size.bytes'] = '20mb'
options['es.batch.size.entries'] = '20000'
df.write.format('org.elasticsearch.spark.sql').options(**options).mode('append').save()
3、spark读取elasticsearch
df3 = spark.read \
.format("org.elasticsearch.spark.sql") \
.option("es.nodes", '节点') \
.option('es.port', '端口') \
.option("es.resource", '索引/索引类型') \
.option('es.query', '?q=*') \
.option('es.nodes.wan.only','true') \
.option("es.nodes.discovery", "false") \
.option("es.index.auto.create", "true") \
.option("es.write.ignore_exception", "true") \
.option("es.read.ignore_exception","true") \
.load()
4、参考链接