Flink入门案例(scala)

0、准备

  • Intellij IDEA
  • 使用gradle构建项目,使用scala作为项目语言

1、IDEA中选择构建gradle项目即可

项目目标:自定义随机数数据源,然后不断的读取随机数

2、项目构建完成后

  • 添加scala文件夹,并且【右键】-【Mark Directory as】-【Sources Root】,如下图:

    目录结构
  • 在build.gradle中添加如下依赖
plugins {
    id 'java'
    id 'scala'
}

group 'org.example'
version '1.0-SNAPSHOT'

repositories {
    mavenLocal()
    maven { url 'https://maven.aliyun.com/repository/public' }
    mavenCentral()
}

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.12'
    compile group: 'org.scala-lang', name: 'scala-library', version: '2.12.10'
    compile( group: 'org.apache.flink', name: 'flink-scala_2.12', version: '1.11.1') exclude module: 'slf4j-api' 
    compile (group: 'org.apache.flink', name: 'flink-streaming-scala_2.12', version: '1.11.1')
    compile (group: 'org.apache.flink', name: 'flink-clients_2.12', version: '1.11.1') exclude module: 'slf4j-api'
}

3、代码示例

import org.apache.flink.streaming.api.functions.source.SourceFunction
import org.apache.flink.streaming.api.scala.StreamExecutionEnvironment

// 一些隐式转换需要这个形式的导入
import org.apache.flink.streaming.api.scala._

import scala.util.Random

object MyOwnDataSource {

  def main(args: Array[String]): Unit = {
    // env
    val env = StreamExecutionEnvironment.getExecutionEnvironment

    //添加数据源
    val stream = env.addSource(new MyDataSource())

    // 执行相关操作
    stream.print()

    // 开始执行  
    env.execute("stream-MyOwnDataSource")
  }

}

class MyDataSource extends SourceFunction[String]{

  var running:Boolean = true

  override def run(ctx: SourceFunction.SourceContext[String]): Unit = {
    val rand = new Random()
    while(running){
      // 核心的一句,通过ctx可以将数据发送出去
      ctx.collect("data--"+rand.nextGaussian()+": "+System.currentTimeMillis())
      Thread.sleep(1000)  
    }
  }

  override def cancel(): Unit = {
    running = false
  }
}

4、测试
直接点击IDEA中的运行按钮即可,打印出来的内容如下:

4> data--0.025704712268118834: 1603007689941
4> data---0.8935837819447313: 1603007689941
4> data--0.6438729979951363: 1603007689941
4> data---0.34440123558130825: 1603007689941
4> data--0.27793098952562134: 1603007689941
4> data--0.33934696503260375: 1603007689941
1> data--0.2792505237097227: 1603007690259
1> data--1.6398778853971754: 1603007690259
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

欧阳小伙

您的打赏是我创作的:最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值