flink通过sql查询数据的代码实现

flink通过sql查询数据的代码实现

 

import org.apache.flink.api.common.functions.FlatMapFunction;
import org.apache.flink.api.java.DataSet;
import org.apache.flink.api.java.ExecutionEnvironment;
import org.apache.flink.api.java.tuple.Tuple2;
import org.apache.flink.table.api.Table;
import org.apache.flink.table.api.TableEnvironment;
import org.apache.flink.table.api.java.BatchTableEnvironment;
import org.apache.flink.types.Row;
import org.apache.flink.util.Collector;


/**
 * 使用SQL查询数据
 */
public class TableSQLDemo {
	public static void main(String[] args) throws Exception {
		//得到默认执行环境
		ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
		DataSet<String> ds1 = env.readTextFile("file:///g:/wc.txt") ;

		//压扁并表一成对
		DataSet<Tuple2<String, Integer>> ds2 = ds1.flatMap(new FlatMapFunction<String, Tuple2<String,Integer>>() {
			public void flatMap(String value, Collector<Tuple2<String, Integer>> out) throws Exception {
				for(String word : value.split(" ")){
					out.collect(new Tuple2<String,Integer>(word , 1) );
				}
			}
		}) ;
		//ds2.print();

		BatchTableEnvironment tEnv = TableEnvironment.getTableEnvironment(env);

		//注册表
		tEnv.registerDataSet("words" , ds2, "word , cnt");
		//通过sql查询注册的表
		Table t2 = tEnv.sqlQuery("select word , count(cnt) wcnt from words group by word order by wcnt desc") ;
		tEnv.toDataSet(t2 , Row.class).print(); ;
	}
}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值