Spark DataFrame写入MySQL数据库(一)

对于结构化数据,我们都可以将其存放到数据库中,尤其在Spark2.0以后,Spark开始用dataframe为核心的API来处理数据。dataframe的结构与SQL结构非常相似,但DataFrame的数据类型不一定与SQL中字段的数据类型兼容,这里分两种情况来说明DataFrame存入数据库。本篇首先介绍简单的数据类型下,如何存入数据库。

假如现在有个文本如下:

1001,zhangsan,23,nan,CS
1002,lisi,22,nv,CS
1003,wangwu,20,nan,MA
1004,zhaoliu,19,nan,MA
1005,qianqi,25,nv,CS

上面的数据均是简单的数据类型,如整型、字符串等,这类可以将文本读成DataFrame后可以直接存入到SQL中。

代码如下:

package core
import org.apache.spark.sql.SparkSession
object df2sql {
  def main(args: Array[String]): Unit = {
    val spark = SparkSession.builder()
                .appName("df2sql").master("local").getOrCreate()                
    val df = spark.read.format("text").load("F:/ida/stu.txt")    
    import org.apache.spark.sql.functions._//split函数为SQL函数
     val Df2 = df.withColumn("splitcol",split(col("value"), ",")).select(
            col("splitcol").getItem(0).as("id"),
            col("splitcol").getItem(1).as("name"),
            col("splitcol").getItem(2).as("age"),
            col("splitcol").getItem(3).as("gender"),
            col("splitcol").getItem(4).as("dept")
        )//.drop("splitcol")

    println("======================================")
     val url = "jdbc:mysql://172.30.16.80:3306/textcluster?characterEncoding=UTF-8"      
      val table="student"//student表可以不存在,但是url中指定的数据库要存在
      val prop = new java.util.Properties
      prop.setProperty("user","root")
      prop.setProperty("password","123")   
   Df2.write.mode("append").jdbc(url, table, prop)
 }
}

对于DataFrame字段中是复合数据类型时,参考Spark DataFrame写入MySQL数据库(二)

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值