声明:本系列博客是根据SGG的视频整理而成,非常适合大家入门学习。
1 工程目录

pom.xml
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-connector-elasticsearch6_2.11</artifactId>
<version>1.10.0</version>
</dependency>
2 flink 写入 hbase
package com.atguigu.flink.app
import java.util
import com.atguigu.flink.bean.SensorReading
import com.atguigu.flink.source.HbaseSource
import org.apache.flink.api.common.functions.RuntimeContext
import org.apache.flink.streaming.api.scala
import org.apache.flink.streaming.api.scala._
import org.apache.flink.streaming.connectors.elasticsearch.{ElasticsearchSinkFunction, RequestIndexer}
import org.apache.flink.streaming.connectors.elasticsearch6.ElasticsearchSink
import org.apache.http.HttpHost
import org.elasticsearch.client.Requests
object ESSinkApp {
def main(args: Array[String]): Unit = {
val env: StreamExecutionEnvironment = StreamExecutionEnvironment.getExecutionEnvironment
env.setParallelism(1)
//调用addSource以此来作为数据输入端
val stream: scala.DataStream[SensorReading] = env.addSource(new HbaseSource)
val httpHosts = new util.ArrayList[HttpHost]()
httpHosts.add(new HttpHost("127.0.0.1", 9200, "http"))
val esSinkBuilder = new ElasticsearchSink.Builder[SensorReading](
httpHosts,
new ElasticsearchSinkFunction[SensorReading]{
override def process(t: SensorReading, runtimeContext: RuntimeContext, requestIndexer: RequestIndexer): Unit = {
// 构造数据格式
val hashMap = new util.HashMap[String, String]()
hashMap.put("data", t.toString)
// 创建请求
val indexRequest = Requests
.indexRequest()
.index("sensor") // 索引是sensor,相当于数据库
.`type`("readingData") // es6必须写这一行代码
.source(hashMap)// 数据源
// 提交数据
requestIndexer.add(indexRequest)
}
}
)
// 设置每一批写入es多少数据
esSinkBuilder.setBulkFlushMaxActions(1)
stream.addSink(esSinkBuilder.build())
// 打印流
stream.print()
// 执行主程序
env.execute()
}
}
该博客介绍了如何使用Flink将数据从HBase读取并写入到Elasticsearch中,包括配置pom.xml文件,设置Elasticsearch连接,定义数据转换及批量写入策略。示例代码详细展示了整个过程。
1610

被折叠的 条评论
为什么被折叠?



