Spark SQL加载kafka数据并将查询结果写出到kafka的执行过程

说明:本文意在对源码进行分析,说明Spark SQL加载kafka数据并将查询结果写出到kafka的过程,如果错误,欢迎指出,大家共同进步 ^ _ ^。

一、加载kafka数据的代码样例

// 这段代码加载kafka数据源,指定了数据源格式,topic、bootstrap server、offset信息等
Dataset<Row> dataset = this.sparkSession.readStream().format("kafka")
		.options(this.getSparkKafkaCommonOptions(sparkSession))
		.option("kafka.bootstrap.servers", ConfigConstMdt.MDT_STREAMING_KAFKA_SERVERS)
		.option("subscribe", ConfigConstMdt.MDT_STREAMING_KAFKA_TOPICS)
		.option("startingOffsets", ConfigConstMdt.MDT_STREAMING_KAFKA_OFFSETS)
		.load();

我们看看load源码

def load(): DataFrame = {
    // 这里的source就是.format("kafka")中的"kafka"
    if (source.toLowerCase(Locale.ROOT) == DDLUtils.HIVE_PROVIDER) {
      throw new AnalysisException("Hive data source can only be used with tables, you can not " +
        "read files of Hive data source directly.")
    }

    // 1 、这里得到的ds是一个KafkaSourceProvider实例
    val ds = DataSource.lookupDataSource(source, sparkSession.sqlContext.conf).newInstance()
    // 2、v1DataSource 确切地讲是对kafka数据源基本信息(配置、schema)的一种封装
    val v1DataSource = DataSource(
      sparkSession,
      userSpecifiedSchema = userSpecifiedSchema,
      className = source,
      options = extraOptions.toMap)
    val v1Relation = ds
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值