Flink DataStream之Kafka数据写入HDFS,并分区到Hive

Flink DataStream之Kafka数据写入HDFS,并分区到Hive

因业务要求,我们需要从Kafka中读取数据,变换后最终Sink到业务的消息队列中,为保证数据的可靠性,我们同时对Sink的结果数据,进行保存。最终选择将流数据Sink到HDFS上,在Flink中,同时也提供了HDFS Connector。下面就介绍如何将流式数据写入HDFS,同时将数据load到Hive表中。

一、pom.xml文件配置
<dependency>
  <groupId>org.apache.flink</groupId>
  <artifactId>flink-connector-filesystem_2.11</artifactId>
  <version>1.8.0</version>
</dependency>
二、Flink DataStream代码

代码是将最后的结果数据,拼接成CSV格式,最后写入HDFS中。下面的逻辑在真实地业务中删除许多。仅保留有用对大家的代码。

public class RMQAndBucketFileConnectSink {
   
   
    public static void main(String[] args) throws Exception {
   
   
        StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
        env.setParallelism(1);


        Properties p = new Properties();
        p.setProperty("bootstrap.servers", "localhost:9092");
        SingleOutputStreamOperator<String
在现代数据处理架构中,FlinkKafka是两个非常流行的工具。Flink是一个流处理框架,而Kafka是一个分布式消息队列。Flink可以消费Kafka中的数据将其分发到数据仓库(DWD层)。以下是一个基本的流程介绍: 1. **Kafka数据源配置**:首先,需要在Flink中配置Kafka数据源。这包括指定Kafka集群的地址、消费者组、主题等信息。 2. **数据处理逻辑**:在Flink中编写数据处理逻辑。这可以包括数据清洗、转换、聚合等操作。Flink提供了丰富的API(如DataStream API和Table API)来支持这些操作。 3. **数据输出配置**:将处理后的数据输出到DWD层。Flink支持多种数据输出方式,如HDFSHive数据库等。需要根据具体的DWD层配置来选择合适的输出方式。 4. **Flink作业提交**:将编写好的Flink作业提交到Flink集群运行。可以使用Flink的命令行工具或通过编程方式提交作业。 以下是一个简单的示例代码,展示了如何使用Flink消费Kafka中的数据将其输出到控制台: ```java import org.apache.flink.api.common.serialization.SimpleStringSchema; import org.apache.flink.streaming.api.datastream.DataStream; import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment; import org.apache.flink.streaming.connectors.kafka.FlinkKafkaConsumer; import java.util.Properties; public class FlinkKafkaConsumerExample { public static void main(String[] args) throws Exception { // 创建Flink执行环境 StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); // 配置Kafka消费者属性 Properties properties = new Properties(); properties.setProperty("bootstrap.servers", "localhost:9092"); properties.setProperty("group.id", "flink-group"); // 创建Kafka消费者 FlinkKafkaConsumer<String> kafkaConsumer = new FlinkKafkaConsumer<>( "input-topic", new SimpleStringSchema(), properties); // 添加Kafka数据源到Flink DataStream<String> stream = env.addSource(kafkaConsumer); // 处理数据(这里只是简单地打印到控制台) stream.print(); // 执行Flink作业 env.execute("Flink Kafka Consumer Example"); } } ``` 在这个示例中,FlinkKafka的“input-topic”消费数据数据打印到控制台。实际应用中,可以将数据输出到DWD层,例如HDFS数据库。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值