spark 加载mysql数据分析_spark sql与mysql 数据加载与导出数据到mysql

package hgs.spark.sql

import org.apache.spark.SparkConf

import org.apache.spark.SparkConf

import org.apache.spark.SparkContext

import org.apache.spark.sql.SQLContext

import org.apache.spark.sql.SQLImplicits

import org.apache.spark.sql.types.StructType

import org.apache.spark.sql.types.StructField

import org.apache.spark.sql.types.StringType

import org.apache.spark.sql.types.IntegerType

import org.apache.spark.sql.Row

import java.util.Properties

//第一种方法创建dataframe

object SqlTest1 {

def main(args: Array[String]): Unit = {

val conf = new SparkConf().setAppName("sqltest1").setMaster("local")

val context = new SparkContext(conf)

val sqlContext = new SQLContext(context)

val rdd = context.textFile("d:\\person",1)

val rdd2 = rdd.map(x=>{val t = x.split(" ");person(t(0).toInt,t(1),t(2).toInt)})

val rdd3 = rdd.map(x=>{val t = x.split(" ");person(t(0).toInt,t(1),t(2).toInt)})

//第一种方法创建dataframe,在这里需要导入隐式转换

import sqlContext.implicits._

val persondf = rdd2.toDF()

val persondf3 = rdd3.toDF()

//这个方法在2.1.0里面被废除

//persondf.registerTempTable("person")

//使用该函数代替

persondf.createOrReplaceTempView("person")

persondf3.createOrReplaceTempView("person2")

val result = sqlContext.sql("select a.id ,b.name  from person a ,person2 b   where a.id = b.id")

//打印查询的结果

result.show()

//或者将结果保存到文件

//result.write.json("d://personselect")

val props =  new Properties();

props.put("user", "root")

props.put("password", "123456")

result.write.mode("append").jdbc("jdbc:mysql://192.168.6.133:3306/hgs", "person", props)

//result.write.mode(saveMode)

context.stop()

}

}

case class person(id:Int,name:String,age:Int)

object sqlTest3{

def main(args: Array[String]): Unit = {

val conf = new SparkConf().setAppName("sqltest3").setMaster("local")

val context = new SparkContext(conf)

val sqlContext = new SQLContext(context)

val persontable = sqlContext.read.format("jdbc").option("url", "jdbc:mysql://192.168.6.133:3306/hgs")

.option("dbtable", "person")

.option("user", "root")

.option("password", "123456").load().createOrReplaceTempView("person")

sqlContext.sql("select id,concat(name,\"xxx\") from person").show()

context.stop()

}

}

  • 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、付费专栏及课程。

余额充值