Apache Carbondata接入Kafka实时流数据

简介: 1.导入carbondata依赖的jar包 将apache-carbondata-1.5.3-bin-spark2.3.2-hadoop2.7.2.jar导入$SPARKHOME/jars;或将apache-carbondata-1.

1.导入carbondata依赖的jar包

apache-carbondata-1.5.3-bin-spark2.3.2-hadoop2.7.2.jar导入$SPARKHOME/jars;或将apache-carbondata-1.5.3-bin-spark2.3.2-hadoop2.7.2.jar导入在$SPARKHOME创建的carbondlib目录

2.导入kafka依赖的jar包

接入kafka数据需要依赖kafka的jars,将以下jars导入$SPARKHOME/jars

kafka-clients-0.10.0.1.jar
spark-sql-kafka-0-10_2.11-2.3.2.jar

3.spark-shell启动服务

./bin/spark-shell --master spark://hostname:7077 --jars apache-carbondata-1.5.3-bin-spark2.3.2-hadoop2.7.2.jar

a).导入依赖

import org.apache.spark.sql.SparkSession
import org.apache.spark.sql.CarbonSession._

b).创建session

启动第一个目录是数据存储目录,第二个目录是元数据目录;都可以是hdfs目录

val carbon = SparkSession.builder().config(sc.getConf).getOrCreateCarbonSession("/home/bigdata/carbondata/data","/home/bigdata/carbondata/carbon.metastore")

c).创建source表

carbon.sql(
            s"""
                | CREATE TABLE IF NOT EXISTS kafka_json_source(
                |     id STRING,
                |    name STRING,
                |    age INT,
                |    brithday TIMESTAMP)
                | STORED AS carbondata
                | TBLPROPERTIES(
                |    'streaming'='source',
                |    'format'='kafka',
                |    'kafka.bootstrap.servers'='hostname:9092',
                |    'subscribe'='kafka_json',
                |    'record_format'='json',
                |    'comment'='get kafka data')
            """.stripMargin).show()

d).创建sink表

carbon.sql(
            s"""
                | CREATE TABLE IF NOT EXISTS kafka_json_sink(
                |     id STRING,
                |    name STRING,
                |    age INT,
                |    brithday TIMESTAMP)
                | STORED AS carbondata
                | TBLPROPERTIES(
                |    'streaming'='sink')
            """.stripMargin).show()

e).创建job任务

carbon.sql(
            s"""
                | CREATE STREAM kafka_json_job ON TABLE kafka_json_sink(
                | STMPROPERTIES(
                |    'trigger'='ProcessingTime',
                |    'interval'='10 seconds')
                | AS SELECT * FROM kafka_json_source
            """.stripMargin).show()

f).创建DATAMAP

carbon.sql(
            s"""
                | CREATE DATAMAP agg_kafka_json_sink 
                | ON TABLE kafka_json_sink(
                | USING "preaggregate"
                | AS
                |    SELECT id,name,sum(age),max(age),min(age),avg(age)
                |    FROM kafka_json_sink
                |    GRPUP BY id,name
            """.stripMargin).show()

4.常用SQL命令

a).导入本地数据

carbon.sql("LOAD DATA INPATH '/home/bigdata/carbondata/sample.csv' INTO TABLE kafka_json_source").show()

b).查看表结构

carbon.sql("DESC kafka_json_source").show()

c).查看表数据

carbon.sql("SELECT * FROM kafka_json_source WHERE id=1").show()

d).清理表数据

carbon.sql("TRUNCATE TABLE kafka_json_sink").show()

e).删除表

carbon.sql("DROP TABLE IF EXISTS kafka_json_source").show()

f).查看job任务状态

carbon.sql("SHOW STREAMS ON TABLE kafka_json_sink").show()

g).删除job任务

carbon.sql("DROP STREAM kafka_json_job").show()

h).查询DATAMAP表信息

carbon.sql("DESC agg_kafka_json_sink_kafka_json_sink").show()

i).查询表Segments信息

carbon.sql("SHOW SEGMENTS FOR TABLE kafka_json_sink").show()

j).条件查询

carbon.sql("SELECT * FROM kafka_json_sink WHERE agent_id=499 AND signature=''").show()

k).聚合查询

carbon.sql("SELECT agent_id,signature,method_type,sum(elapse_time),max(elapse_time),min(elapse_time) FROM kafka_json_sink GROUP BY agent_id,signature,method_type").show()

5.注意事项

a).kafka使用配置

由于Carbondata的kafka-consumer反序列化配置如下,所以在kafka-producer应该使用对于配置,否则无法解析数据

key.deserializer = org.apache.kafka.common.serialization.ByteArrayDeserializer
value.deserializer = org.apache.kafka.common.serialization.ByteArrayDeserializer
目录
相关文章
|
12月前
|
消息中间件 监控 Java
Apache Kafka 分布式流处理平台技术详解与实践指南
本文档全面介绍 Apache Kafka 分布式流处理平台的核心概念、架构设计和实践应用。作为高吞吐量、低延迟的分布式消息系统,Kafka 已成为现代数据管道和流处理应用的事实标准。本文将深入探讨其生产者-消费者模型、主题分区机制、副本复制、流处理API等核心机制,帮助开发者构建可靠、可扩展的实时数据流处理系统。
955 4
|
消息中间件 存储 监控
Apache Kafka 3.0与KRaft模式的革新解读
在该架构中,Kafka集群依旧包含多个broker节点,但已不再依赖ZooKeeper集群。被选中的Kafka集群Controller将从KRaft Quorum中加载其状态,并在必要时通知其他Broker节点关于元数据的变更。这种设计支持更多分区与快速Controller切换,并有效避免了因数据不一致导致的问题。
|
消息中间件 存储 缓存
kafka 的数据是放在磁盘上还是内存上,为什么速度会快?
Kafka的数据存储机制通过将数据同时写入磁盘和内存,确保高吞吐量与持久性。其日志文件按主题和分区组织,使用预写日志(WAL)保证数据持久性,并借助操作系统的页缓存加速读取。Kafka采用顺序I/O、零拷贝技术和批量处理优化性能,支持分区分段以实现并行处理。示例代码展示了如何使用KafkaProducer发送消息。
|
消息中间件 Java Kafka
什么是Apache Kafka?如何将其与Spring Boot集成?
什么是Apache Kafka?如何将其与Spring Boot集成?
981 5
|
消息中间件 Java Kafka
Spring Boot 与 Apache Kafka 集成详解:构建高效消息驱动应用
Spring Boot 与 Apache Kafka 集成详解:构建高效消息驱动应用
987 1
|
11月前
|
人工智能 数据处理 API
阿里云、Ververica、Confluent 与 LinkedIn 携手推进流式创新,共筑基于 Apache Flink Agents 的智能体 AI 未来
Apache Flink Agents 是由阿里云、Ververica、Confluent 与 LinkedIn 联合推出的开源子项目,旨在基于 Flink 构建可扩展、事件驱动的生产级 AI 智能体框架,实现数据与智能的实时融合。
1622 6
阿里云、Ververica、Confluent 与 LinkedIn 携手推进流式创新,共筑基于 Apache Flink Agents 的智能体 AI 未来
|
存储 Cloud Native 数据处理
从嵌入式状态管理到云原生架构:Apache Flink 的演进与下一代增量计算范式
本文整理自阿里云资深技术专家、Apache Flink PMC 成员梅源在 Flink Forward Asia 新加坡 2025上的分享,深入解析 Flink 状态管理系统的发展历程,从核心设计到 Flink 2.0 存算分离架构,并展望未来基于流批一体的通用增量计算方向。
776 0
从嵌入式状态管理到云原生架构:Apache Flink 的演进与下一代增量计算范式
|
SQL 人工智能 数据挖掘
Apache Flink:从实时数据分析到实时AI
Apache Flink 是实时数据处理领域的核心技术,历经十年发展,已从学术项目成长为实时计算的事实标准。它在现代数据架构中发挥着关键作用,支持实时数据分析、湖仓集成及实时 AI 应用。随着 Flink 2.0 的发布,其在流式湖仓、AI 驱动决策等方面展现出强大潜力,正推动企业迈向智能化、实时化的新阶段。
1351 9
Apache Flink:从实时数据分析到实时AI
|
SQL 人工智能 API
Apache Flink 2.1.0: 面向实时 Data + AI 全面升级,开启智能流处理新纪元
Apache Flink 2.1.0 正式发布,标志着实时数据处理引擎向统一 Data + AI 平台迈进。新版本强化了实时 AI 能力,支持通过 Flink SQL 和 Table API 创建及调用 AI 模型,新增 Model DDL、ML_PREDICT 表值函数等功能,实现端到端的实时 AI 工作流。同时增强了 Flink SQL 的流处理能力,引入 Process Table Functions(PTFs)、Variant 数据类型,优化流式 Join 及状态管理,显著提升作业稳定性与资源利用率。
1035 0
|
存储 人工智能 大数据
The Past, Present and Future of Apache Flink
本文整理自阿里云开源大数据负责人王峰(莫问)在 Flink Forward Asia 2024 上海站主论坛开场的分享,今年正值 Flink 开源项目诞生的第 10 周年,借此时机,王峰回顾了 Flink 在过去 10 年的发展历程以及 Flink社区当前最新的技术成果,最后展望下一个十年 Flink 路向何方。
1388 33
The Past, Present and Future of Apache Flink

热门文章

最新文章

推荐镜像

更多