flink中通过jdbc查询结果集使用 flink table api 创建临时视图

1.maven依赖

<dependency>
  <groupId>org.apache.flink</groupId>
  <artifactId>flink-table-planner-blink_${scala.version}</artifactId>
  <version>${flink.version}</version>
  <scope>provided</scope>
</dependency>

<dependency>
  <groupId>org.apache.flink</groupId>
  <artifactId>flink-table-api-scala-bridge_${scala.version}</artifactId>
  <version>${flink.version}</version>
  <scope>provided</scope>
</dependency>

<!--Table的公共依赖-->
<!-- https://mvnrepository.com/artifact/org.apache.flink/flink-table-common -->
<dependency>
  <groupId>org.apache.flink</groupId>
  <artifactId>flink-table-common</artifactId>
  <scope>provided</scope>
</dependency>
<dependency>
  <groupId>org.apache.flink</groupId>
  <artifactId>flink-json</artifactId>
  <version>${flink.version}</version>
</dependency>

<dependency>
  <groupId>org.apache.hive</groupId>
  <artifactId>hive-jdbc</artifactId>
  <version>1.1.0</version>
  <exclusions>
    <exclusion>
      <artifactId>jetty-all</artifactId>
      <groupId>org.eclipse.jetty.aggregate</groupId>
    </exclusion>
    <exclusion>
      <artifactId>jetty</artifactId>
      <groupId>org.mortbay.jetty</groupId>
    </exclusion>
    <exclusion>
      <artifactId>jetty-util</artifactId>
      <groupId>org.mortbay.jetty</groupId>
    </exclusion>
    <exclusion>
      <artifactId>protobuf-java</artifactId>
      <groupId>com.google.protobuf</groupId>
    </exclusion>
  </exclusions>
</dependency>

2.创建TableEnventment环境

val settings = EnvironmentSettings.newInstance().useBlinkPlanner().inStreamingMode().build()
val env = StreamExecutionEnvironment.getExecutionEnvironment
val tableEnvironment = StreamTableEnvironment.create(env,settings)

3.使用jdbc获取结果集

3.1创建样例类

private case class dict(dict_type:String, dict_name:String)

3.2创建jdbc连接获取结果集

val userName = "*******"
val password = "*******"
val driver = "org.apache.hive.jdbc.HiveDriver"
val hiveProperties = new Properties()
hiveProperties.setProperty("driver",driver)
hiveProperties.setProperty("userName",userName)
hiveProperties.setProperty("password",password)
Class.forName(driver)
val conn = DriverManager.getConnection("jdbc:hive2://*************",userName,password)

//查询为表数据,并将数据写入ArrayBuff
val res = conn.prepareStatement(
  """
|select dict_type1,dict_name1
|from dwd_order.t_dimersion_ed
|where dict_type = '003'
|""".stripMargin).executeQuery()
var arrayBuff:ArrayBuffer[dict] = ArrayBuffer()
while (res.next()) {
  arrayBuff.append(dict(res.getString("dict_type1"),
                        res.getString("dict_name1")))
}

4.将ArrayBuff转化为DataStream后生成临时视图

    //将数据转化成DataStream
    val dimStream = env.fromCollection[dict](arrayBuff.toSeq)

    //创建维表临时视图
    tableEnvironment.createTemporaryView("temp_dict",dimStream)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Vicky_Tang

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值