Flink SQL 批处理

爷,独闯天下 提交于 2020-01-01 17:19:18


<dependencies>    <dependency>        <groupId>org.apache.flink</groupId>        <artifactId>flink-table-planner_2.11</artifactId>        <version>1.9.0</version>    </dependency>    <dependency>        <groupId>org.apache.flink</groupId>        <artifactId>flink-table-api-java-bridge_2.11</artifactId>        <version>1.9.0</version>    </dependency>    <dependency>        <groupId>org.apache.flink</groupId>        <artifactId>flink-table-api-scala-bridge_2.11</artifactId>        <version>1.9.0</version>    </dependency>    <dependency>        <groupId>org.apache.flink</groupId>        <artifactId>flink-streaming-scala_2.11</artifactId>        <version>1.9.0</version>    </dependency>    <dependency>        <groupId>org.apache.flink</groupId>        <artifactId>flink-table-common</artifactId>        <version>1.9.0</version>    </dependency></dependencies>
import org.apache.flink.api.java.DataSet;import org.apache.flink.api.java.ExecutionEnvironment;import org.apache.flink.table.api.Table;import org.apache.flink.table.api.java.BatchTableEnvironment;public class FLinkSqlBatch {   public static void main(String[] args) throws Exception {      //1) 获取执行环境      ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();      BatchTableEnvironment tableEnv = BatchTableEnvironment.create(env);      /**       * 1.csv       * channel,subject,refer,reg,ord,pv,uv       * 朋友圈,三科,H5,100,100,100,100       * 朋友圈,数学,H5,100,100,100,100       * 朋友圈,理科,H5,100,100,100,100       * 朋友圈,编程,H5,100,100,100,100       * 朋友圈,英语,H5,100,100,100,100       * 朋友圈,通用,H5,100,100,100,100       */      // 2)读取数据      DataSet<AdPojo> csvInput = env            .readCsvFile("D:\\code\\learn\\flink-sql\\src\\main\\resources\\1.csv")            .ignoreFirstLine() //忽略第一行            .pojoType(AdPojo.class, "channel", "subject", "refer", "reg", "ord", "pv", "uv");      //3)将DataSet转换为Table,并注册为table1      Table topScore = tableEnv.fromDataSet(csvInput);      tableEnv.registerTable("table1", topScore);      //4)自定义sql语句      Table groupedByCountry = tableEnv.sqlQuery("select channel,subject,refer,reg,ord,pv,uv from table1");      //5)转换回dataset      DataSet<AdPojo> result = tableEnv.toDataSet(groupedByCountry, AdPojo.class);      //6)打印      result.print();   }}

AdPojo{channel='朋友圈', subject='英语', refer='H5', reg='100', ord='100', pv='100', uv='100'}
AdPojo{channel='朋友圈', subject='通用', refer='H5', reg='100', ord='100', pv='100', uv='100'}
AdPojo{channel='朋友圈', subject='三科', refer='H5', reg='100', ord='100', pv='100', uv='100'}
AdPojo{channel='朋友圈', subject='理科', refer='H5', reg='100', ord='100', pv='100', uv='100'}
AdPojo{channel='朋友圈', subject='数学', refer='H5', reg='100', ord='100', pv='100', uv='100'}
AdPojo{channel='朋友圈', subject='编程', refer='H5', reg='100', ord='100', pv='100', uv='100'}



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!