Flink--Environment

本文详细介绍了Flink在批处理和流处理中获取执行环境的方法,getExecutionEnvironment会根据运行环境自动判断是本地还是集群。在本地执行时,会创建LocalEnvironment,而集群环境下则需要指定jobmanager的IP、RPC端口及运行的JAR包。Flink的这一设计简化了开发者的工作,确保在不同环境下的顺利执行。

获取当前程序的上下文
批处理:

val env: ExecutionEnvironment = ExecutionEnvironment.getExecutionEnvironment

流处理:

val env = StreamExecutionEnvironment.getExecutionEnvironment

这里涉及不同的底层实现。
在idea和生产环境中的执行环境是不同的
getExecutionEnvironment底层会自动帮我们判断是本地环境还是集群生产环境
然后以此调用:

//本地执行环境
StreamExecutionEnvironment.createLocalEnvironment(1)

传入的参数运行并行度,不传入则为默认并行度。

//集群执行环境
ExecutionEnvironment.createRemoteEnvironment("jobmanage-hostname", 6123,"YOURPATH//wordcount.jar")

需要提供jobmanager的ip和RPC端口号,还需要指定运行的jar包。

由于测试环境和生产环境运行方式的不同,需返回不同的环境
为了方便开发,flink对其进行了保证,它会自己根据运行方式的不同
返回其对应的运行环境。
开发者只需要getExecutionEnvironment即可。

### 添加依赖 在 `pom.xml` 中添加以下依赖: ```xml <dependencies> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-streaming-java_2.12</artifactId> <version>1.20.2</version> </dependency> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-table-api-java_2.12</artifactId> <version>1.20.2</version> </dependency> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-table-api-java-bridge_2.12</artifactId> <version>1.20.2</version> </dependency> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-connector-kafka_2.12</artifactId> <version>1.20.2</version> </dependency> </dependencies> ``` ### 编写代码 以下是一个使用 Flink SQL 处理 Kafka 中某个 Topic 数据的示例代码: ```java import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment; import org.apache.flink.table.api.bridge.java.StreamTableEnvironment; public class FlinkKafkaSQLExample { public static void main(String[] args) throws Exception { // 创建流执行环境 StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); // 创建表执行环境 StreamTableEnvironment tableEnv = StreamTableEnvironment.create(env); // 创建 Kafka 数据源表 String createSourceTableSQL = "CREATE TABLE kafka_source (\n" + " `id` INT,\n" + " `name` STRING\n" + ") WITH (\n" + " 'connector' = 'kafka',\n" + " 'topic' = 'your_topic',\n" + " 'properties.bootstrap.servers' = 'localhost:9092',\n" + " 'format' = 'json'\n" + ")"; tableEnv.executeSql(createSourceTableSQL); // 执行 SQL 查询 String querySQL = "SELECT id, name FROM kafka_source WHERE id > 10"; tableEnv.executeSql(querySQL).print(); // 执行作业 env.execute("Flink Kafka SQL Example"); } } ``` ### 代码解释 1. **创建执行环境**:创建 `StreamExecutionEnvironment` 和 `StreamTableEnvironment`,分别用于流处理和表处理。 2. **创建 Kafka 数据源表**:使用 `CREATE TABLE` 语句创建一个 Kafka 数据源表,指定连接器类型、Topic 名称、Kafka 服务器地址和数据格式。 3. **执行 SQL 查询**:使用 `SELECT` 语句从 Kafka 数据源表中查询数据,并将结果打印到控制台。 4. **执行作业**:调用 `env.execute()` 方法启动 Flink 作业。 ### 注意事项 - 请根据实际情况修改 Kafka 服务器地址、Topic 名称和数据格式。 - 确保 Kafka 中存在指定的 Topic,并且数据格式与 SQL 语句中的字段类型一致。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值