在 Hive 中从 Kafka 获取数据,通常指的是将 Kafka 中的数据实时或近实时地导入到 Hive 数据仓库中进行分析。Hive 本身不直接“拉取” Kafka 数据,而是需要借助外部工具。
主要有以下两种主流和推荐的方法:
- 使用 Apache Spark Structured Streaming(推荐)
- 使用 Apache Flink
- 使用 Confluent Kafka Connect HDFS Sink(传统方法)
我将重点介绍最常用、最灵活的 Spark Structured Streaming 方法。
方法一:使用 Apache Spark Structured Streaming(推荐)
这是目前最流行和强大的方案。Spark 作为计算引擎,可以消费 Kafka 数据,经过处理(可选),然后写入到 Hive 表中。
核心思想: Spark 充当了 Kafka 和 Hive 之间的桥梁。
步骤:
1. 确保环境与依赖
- 集群环境: 已安装 Hadoop(HDFS、YARN)、Hive、Spark 和 Kafka。
- Spark-Kafka 集成: 确保你的 Spark 版本包含
spark-sql-kafka-0-10模块。通常通过 Spark 安装包或指定 Maven/SBT 依赖获取。 - Hive Support: 启动 Spark Shell 或提交作业时,必须启用 Hive Support,这样 Spark 才能识别 Hive 的元数据( metastore )。
2. 编写 Spark 应用程序
以下是一个使用 Scala 编写的示例代码。思路是创建一个从 Kafka 读取的流(Streaming DataFrame),进行转换,然后持续地写入到 Hive 表中。
import org.apache.spark.sql.SparkSession
import org.apache.spark.sql.functions._
import org.apache.spark.sql.types._
object KafkaToHiveStreaming {
def main(args: Array[String]): Unit = {
// 创建支持Hive的SparkSession
val spark

最低0.47元/天 解锁文章
1194

被折叠的 条评论
为什么被折叠?



