从0 到1Flink的成长之路(六)

本文介绍了Apache Flink中数据源的概念,详细讲解了如何创建基于集合和文件的Source。对于基于集合的Source,提到了env.fromElements、env.fromCollection和env.generateSequence等API,并提供了代码示例。而对于基于文件的Source,讨论了env.readTextFile和env.readCsvFile的方法,以及如何配置读取目录。
摘要由CSDN通过智能技术生成

 

 

 

一、基于集合的Source

API

一般用于学习测试时模拟数据使用
1.env.fromElements(可变参数);
2.env.fromColletion(各种集合);
3.env.generateSequence(开始,结束);

代码演示:

package xx.xxxxx.flink.source;
import org.apache.flink.api.java.ExecutionEnvironment;
import org.apache.flink.api.java.operators.DataSource;
import java.util.Arrays;
/**
* DataSet API 批处理中数据源:基于集合Source
* 1.env.fromElements(可变参数);
* 2.env.fromColletion(各种集合);
* 3.env.generateSequence(开始,结束);
*/
public class BatchSourceCollectionDemo {
public static void main(String[] args) throws Exception {
// 1. 执行环境-env
ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
// 2. 数据源-source
// 方式一:可变参数列表
DataSource<String> dataSet01 = env.fromElements("hadoop", "flink", "spark");
dataSet01.printToErr();
// 方式二:集合,如列表List
DataSource<String> dataSet02 = env.fromCollection(Arrays.asList("hadoop", "spark", "flink"));
dataSet02.printToErr();
// 方式三:序列
DataSource<Long> dataSet03 = env.generateSequence(1, 10);
dataSet03.printToErr();
}
}

二、基于文件的Source

API

1.env.readTextFile(本地文件/HDFS文件); //压缩文件也可以
2.env.readCsvFile[泛型]("本地文件/HDFS文件")
Configuration parameters = new Configuration();
parameters.setBoolean("recursive.file.enumeration", true);//设置是否递归读取目录
3.env.readTextFile("目录").withParameters(parameters);

代码演示:

package xx.xxxxx.flink.source;
import lombok.Data;
import org.apache.flink.api.java.ExecutionEnvironment;
import org.apache.flink.api.java.operators.DataSource;
import org.apache.flink.configuration.Configuration;
/**
* DataSet API 批处理中数据源:基于文件Source
* 1.env.readTextFile(本地文件/HDFS文件); //压缩文件也可以
* 2.env.readCsvFile[泛型]("本地文件/HDFS文件")
* Configuration parameters = new Configuration();
* parameters.setBoolean("recursive.file.enumeration", true);//设置是否递归读取目录
* 3.env.readTextFile("目录").withParameters(parameters);
*/
public class BatchSourceFileDemo {
public static void main(String[] args) throws Exception {
// 1. 执行环境-env
ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
// 2. 数据源-source
// 文本文件
DataSource<String> dataSet01 = env.readTextFile("datas/wordcount.data");
dataSet01.printToErr();
// CSV 文件
DataSource<Rating> dataSet02 = env
.readCsvFile("datas/u.data")
.fieldDelimiter("\t")
.pojoType(Rating.class, "userId", "userId", "rating", "timestamp");
dataSet02.printToErr();
// 目录
Configuration parameters = new Configuration();
parameters.setBoolean("recursive.file.enumeration", true);
DataSource<String> dataSet03 = env
.readTextFile("datas/subDatas")
.withParameters(parameters);
dataSet03.printToErr();
}
@Data
public static class Rating{
public Integer userId ;
public Integer movieId ;
public Double rating ;
public Long timestamp ;
}
}

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值