kafka spark steam 写入elasticsearch的部分问题

本文介绍了使用Spark 2.2.0与Elasticsearch 5.5进行数据处理时遇到的问题及解决办法,包括依赖冲突、upsert操作设置ID以及从Kafka读取JSON数据并进行反序列化的细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

应用版本

elasticsearch 5.5

spark 2.2.0

hadoop 2.7

 

依赖包版本

docker cp /Users/cclient/.ivy2/cache/org.elasticsearch/elasticsearch-spark-20_2.11/jars/elasticsearch-spark-20_2.11-6.0.0-alpha2.jar spark:/usr/spark-2.2.0/jars/

 

问题1

Multiple ES-Hadoop versions detected in the classpath; please use only one

多了其他依赖包 我的环境多引入了elasticsearch-hadoop-cascading-6.0.0-alpha2.jar 删除即可

 

问题2

an id must be provided if version type or value are set;

upsert 时必须指定 id 

"es.mapping.id"->"id"

 

问题3

kafka 存储的是 json 序列化内容,spark 操作中需要反序列化,默认应用的json4s

map(jsonitem=>{
implicit val formats = DefaultFormats
parseJson(jsonitem).extract[ESData]
}

ESData 为 case class 若json 字符串不规范,缺少相应字段,则会报错,为该字段设默认值即可

case class ESData(bool_isEssence : Option[Boolean]=Some(false),text_title : String)

 

 

写入 es 配置官方文档

https://www.elastic.co/guide/en/elasticsearch/hadoop/current/configuration.html

官方示例  

es.resource.write = my-collection/{media_type}

 index 类型是固定的,经测,同样可以自定义

如 

es.resource.write ={media_type}/{media_type}

 

elasticsearch 存储时根据年月分区

 

控制信息都保存在源json数据内,spark 写入时只作反序列化,和index 和 type 映射

转载于:https://www.cnblogs.com/zihunqingxin/p/7661753.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值