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

第一步

依赖
  <!--对接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")
  }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先,你需要使用Spark来处理电影数据并进行统计分析,然后将结果导出到MySQL数据库中。以下是一些基本步骤: 1. 确保你已经安装好了SparkMySQL,并且你的电影数据存储在Hadoop的HDFS上或者是Spark支持的其他分布式存储系统上。 2. 使用Spark读取电影数据,可以使用Spark SQL或者DataFrame API进行数据处理和分析。 3. 对数据进行统计分析,例如计算电影评分的平均值、中位数、最大值、最小值等等。 4. 将处理好的数据保存到MySQL数据库中。你可以使用JDBC连接器将数据导出,或者使用Spark提供的MySQL连接器将数据批量导入到MySQL中。 下面是一个基本的Scala代码示例来实现上述步骤: ```scala import org.apache.spark.sql.SparkSession import java.util.Properties object MovieAnalysis { def main(args: Array[String]): Unit = { // 创建SparkSession val spark = SparkSession.builder() .appName("MovieAnalysis") .master("local[*]") .getOrCreate() // 读取电影数据 val df = spark.read.format("csv") .option("header", "true") .load("hdfs://path/to/movie/data.csv") // 统计分析 val result = df.groupBy("movieId") .agg(avg("rating"), max("rating"), min("rating")) // 导出到MySQL val url = "jdbc:mysql://localhost:3306/moviedb" val props = new Properties() props.setProperty("user", "root") props.setProperty("password", "password") props.setProperty("driver", "com.mysql.jdbc.Driver") result.write.jdbc(url, "movie_stats", props) // 关闭SparkSession spark.stop() } } ``` 这个例子中,我们使用Spark读取电影数据,然后对每部电影的评分进行平均值、最大值和最小值的计算。最后,我们将结果保存到MySQL数据库中的`moviedb`库的`movie_stats`表中。 请注意,这只是一个基本的示例,你需要根据自己的实际情况进行修改和扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值