用spark Streamming 将mysql的数据 展示到控制台

本文详细介绍如何使用Apache Spark读取MySQL数据库中的数据,包括配置依赖、编写Spark应用程序以及使用Hadoop配置进行数据库连接设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一步

依赖
  <!--对接MysQL-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.38</version>
        </dependency>
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-core_2.11</artifactId>
            <version>2.4.3</version>
        </dependency>

        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-client</artifactId>
            <version>2.9.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-auth</artifactId>
            <version>2.9.2</version>
        </dependency>
drver编写
package com.baizhi.demo02

import com.mysql.jdbc.Driver
import org.apache.hadoop.conf.Configuration
import org.apache.hadoop.io.LongWritable
import org.apache.hadoop.mapreduce.lib.db.DBConfiguration
import org.apache.hadoop.mapreduce.lib.db.DBInputFormat
import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.rdd.RDD

object SparkRDDMySQL {
  def main(args: Array[String]): Unit = {
    //1.创建SparkContext
    val sparkConf = new SparkConf()
      .setMaster("local[6]")
      .setAppName("wordcount")
    val sc=new SparkContext(sparkConf)
    //2.创建并行集合 数据集 抽象成 Spark 并行集合 RDD (理解Scala集合升级版)
    val hadoopConfig = new Configuration()
    DBConfiguration.configureDB(hadoopConfig,
      "com.mysql.jdbc.Driver",
      "jdbc:mysql://localhost:3306/test",
      "root", "root")

    hadoopConfig.set(DBConfiguration.INPUT_QUERY,"select id,name from t_user")
    hadoopConfig.set(DBConfiguration.INPUT_COUNT_QUERY,"select count(*) from t_user")
    hadoopConfig.set(DBConfiguration.INPUT_CLASS_PROPERTY,"com.baizhi.demo02.UserDBWriteable")

    val userRDD:RDD[(LongWritable,UserDBWriteable)] = sc.newAPIHadoopRDD(hadoopConfig,classOf[DBInputFormat[UserDBWriteable]],classOf[LongWritable],classOf[UserDBWriteable])

    userRDD.map(t=>(t._2.id,t._2.name))
        .foreach(tuple=>println(tuple))//action算子
    //4.关闭SparkContext
    sc.stop();
  }
}

package com.baizhi.demo02

import java.sql.{PreparedStatement, ResultSet}

import org.apache.hadoop.mapreduce.lib.db.DBWritable

class UserDBWriteable extends DBWritable{
  var id:Int=_
  var name:String=_
  //无需是实现-使用DBOutputForamt使用
  override def write(preparedStatement: PreparedStatement): Unit = {

  }

  //封装数据
  override def readFields(rs: ResultSet): Unit = {
    id = rs.getInt("id")
    name=rs.getString("name")
  }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值