Flink核心API之Table API和SQL

Table API和SQL是一种关系型 API,用户可以像操作 Mysql 数据库表一样的操作数据

一、在pom中引入依赖

如果你想要使用Table API 和SQL的话,需要添加下面的依赖


  org.apache.flink
  flink-table-api-java-bridge_2.11
  1.11.0



  org.apache.flink
  flink-table-api-scala-bridge_2.11
  1.11.0


如果你想在 本地 IDE中运行程序,还需要添加下面的依赖


  org.apache.flink
  flink-table-planner-blink_2.11
  1.11.0

    org.apache.flink
    flink-table-planner_2.11
    1.11.1


如果你用到了老的执行引擎,还需要添加下面这个依赖

    org.apache.flink
    flink-table-planner_2.11
    1.11.1

二、创建tableEnviroment对象

2.1 如果Table API和SQL不需要和DataStream或者DataSet互相转换

则针对stream和batch都可以使用TableEnvironment

   //指定底层使用blink引擎,及数据处理模式-stream
   val sSetting = EnvironmentSettings.newInstance().useBlinkPlanner()
                 .inStreamingMode().build()

   val sTableEnv = TableEnvironment.create(sSetting)


   //指定底层使用blink引擎,及数据处理模式-batch
    val sSettings = EnvironmentSettings.newInstance().useBlinkPlanner()
                   .inBatchMode().build()
    //创建TableEnvironment对象
    val sTableEnv = TableEnvironment.create(sSettings)

2.2 如果Table API和SQL需要和DataStream或者DataSet互相转换

  •  针对stream需要使用StreamTableEnvironment
  •  针对batch需要使用BatchTableEnvironment
    #针对stream需要使用StreamTableEnvironment
    
    val ssEnv = StreamExecutionEnvironment.getExecutionEnvironment
    val ssSettings = EnvironmentSettings.newInstance().useBlinkPlanner().
    inStreamingMode().build()
    val ssTableEnv = StreamTableEnvironment.create(ssEnv, ssSettings)

    #针对batch需要使用BatchTableEnvironment
    val bbEnv = ExecutionEnvironment.getExecutionEnvironment
    val bb = BatchTableEnvironment.create(bbEnv);

三、Table API和 SQL的使用

3.1 创建表

   sTableEnv.executeSql("create table myTable(id int,name String)\n" +
      ") with(\n" +
      "'connector.type'='filesystem',\n" +

      "'connector.path'='D:\\bigdata/source',\n" +

      "'connector.type'='csv'\n"+
      ")"
    )
  • connector.type’ = ‘filesystem’说明外部连接器的类型为文件系统,
  • ‘connector.path’ ='D:\\bigdata/source’指定了外部文件系统连接器的文件路径,
  • ‘format.type’ = 'csv’则说明文件系统的数据格式为CSV。
  • csv是以纯文本的形式存储表格数据,逗号分隔值文件格式

3.2 使用sql 实现数据查询和过滤操作

  val result = sTableEnv.sqlQuery("select id,name from myTable where id>1")

Flink核心API之Table API和SQL_第1张图片

 3.3 使用table实现数据查询和过滤操作

    import org.apache.flink.table.api._

    val result =  sTableEnv.from("myTable").select($"id",$"name").filter($"id" >1)

四、异常:Static methods in interface require -target:jvm-1.8

 解决办法:在File -> Settings中按图设置即可:-target:jvm-1.8

Flink核心API之Table API和SQL_第2张图片

 

你可能感兴趣的:(大数据,flink,sql,java)