Flink - Sink

Flink - Sink

在说sink前,我们提一句flink数据传输重分区,也是DataStream内所拥有方法。

  • shuffle:设置DataStream的分区,以便输出元素随机地均匀地移至下一个操作。
  • keyby:创建一个新的KeyedStream,使用提供的key进行分区
  • global:设置DataStream的分区,以便输出值全部转到下一个处理运算符的第一个实例。用这个请小心设置,因为这可能会导致严重的性能瓶颈在应用程序中.
  • rebalance:设置DataStream的分区,以便输出元素以轮询方式平均分配给下一个操作的实例

Sink

Flink没有类似spark中foreach方法,让用户进行迭代操作。虽有对外的输出操作都要利用sink完成。最后通过类似方式完成整个任务最终输出操作:

stream.addSink(new MySink(xxx))

官方提供了一部分框架的sink,也可自定义实现sink

1.10版本提供的sink

  • Apache Kafka(source/sink)
  • Apache Cassandra(sink)
  • Amazom Kinesis Streams (source/sink)
  • Elasticsearch(sink)
  • Hadoop FileSystem(sink)
  • RabbitMQ(source/sink)
  • Apache NiFi(source/sink)
  • Twitter Streaming API(source)

三方框架(Apache Bahir)提供的sink

  • Apache ActiveMQ(source/sink)
  • Apache Flume(sink)
  • Redis(sink)
  • Akka(sink)
  • Netty(source)

Flink-1.12.0提供的sink

案例中变量值

<flink.version>1.12.0</flink.version>		
<scala.binary.version>2.11</scala.binary.version>

Kafka

flink - kafka 依赖坐标导入

<!-- https://mvnrepository.com/artifact/org.apache.flink/flink-connector-kafka -->
<dependency>
    <groupId>org.apache.flink</groupId>
    <artifactId>flink-connector-kafka_2.12</artifactId>
    <version>1.12.0</version>
</dependency>

案例代码 -> 基于Flink 1.12.0版本

StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
        DataStream<String> filedata = env.readTextFile("data/temps.txt");

        DataStream<String> mapDataStream = filedata.map(new MapFunction<String, String>() {
   
            @Override
            public String map(String value) throws Exception {
   
                String[] split = value.split(",");
                return new TempInfo(split[0],new Long(split[1]),new Double(split[2])).toString();
            }
        });

        mapDataStream.addSink(new FlinkKafkaProducer<String>("localhost:9092"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值