DataSet API 介绍

Transformations

  • map:输入一个元素,然后返回一个元素,中间可以做一些清洗转换等操作
  • FlatMap:输入一个元素,可以返回零个,或一个多个元素
  • MapPartiton:类似map,一次处理一个分区的数据【如果再进行map处理的时候需要获取第三方资源连接,建议使用MapPartiton】
  • filter:过滤函数,对传入的数据进行判断,符合条件的数据会被保留下
  • reduce:对数据进行聚合操作,结合当前元素和上一次reduce返回的值进行聚合操作,然后返回一个新值
  • aggregations:sum(),min(),max()等
  • Distinct:返回一个数据集中去重之后的元素,data.distinct();
  • join:内连接
  • OuterJoin:外连接
  • Cross:获取两个数据集的笛卡尔积
  • Union:返回两个数据集的总和,数据类型需要一致
  • First-n:获取集合中的前N个元素
  • Sort Partiton:再本地对数据集的所有分区进行排序,通过sortPartition的链接调用来完成对多个字段的排序
package com.im.flink.task.batch;

import org.apache.flink.api.common.functions.MapPartitionFunction;
import org.apache.flink.api.java.DataSet;
import org.apache.flink.api.java.ExecutionEnvironment;
import org.apache.flink.api.java.operators.DataSource;
import org.apache.flink.util.Collector;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

/**
 * describe:
 *
 * @author lm
 * @date 2019/11/3
 */
public class BatchDeamoMapPartition {

    public static void main(String[] args) throws Exception {

       ExecutionEnvironment env  = ExecutionEnvironment.getExecutionEnvironment();


       List<String> list= new ArrayList<>();

       list.add("hello you");
       list.add("helloe me");

        DataSource<String> text = env.fromCollection(list);

        DataSet<String> mapPartitionData = text.mapPartition(new MapPartitionFunction<String, String>() {

            @Override
            public void mapPartition(Iterable<String> iterable, Collector<String> collector) throws Exception {
                // 获取数据库连接 ,此时是一个分区的数据获取一次连接【优点,每个分区获取一次连接】
                // values中保存一个分区的数据
                // 处理数据

                Iterator<String> it = iterable.iterator();
                while (it.hasNext()){
                    String next = it.next();
                    String[] split = next.split("\\ ");
                    for (String word:split){
                        System.out.println("BatchDeamoMapPartition.mapPartition:"+word);
                        collector.collect(word);
                    }
                }
                // 关闭连接
            }
        });

        mapPartitionData.distinct().print();

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值