pyspark 将dataframe写入elasticsearch

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、参考链接

https://www.cnblogs.com/tomorrow-hope/p/13885961.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值