SparkSQL代码04——输入输出、JDBC

一、SparkSQL输入输出

1.1 SparkSQL输入

写法一:

SparkSession对象.read.json("路径")

SparkSession对象.read.jdbc("路径")

SparkSession对象.read.csv("路径")

SparkSession对象.read. parquet("路径") Parquet格式经常在Hadoop生态圈中被使用,它也支持Spark SQL的全部数据型

SparkSession对象.read.orc("路径")

SparkSession对象.read.table("路径")

SparkSession对象.read.text("路径")

SparkSession对象.read. textFile("路径")

 

写法二:

SparkSession对象.read.format("json").load("路径")

ps:若不执行format默认是parquet格式

1.2 SparkSQL输出

写法一:

DataFrame或DataSet对象.write.json("路径")

DataFrame或DataSet对象.write.jdbc("路径")

DataFrame或DataSet对象.write.csv("路径")

DataFrame或DataSet对象.write.parquet("路径")

DataFrame或DataSet对象.write.orc("路径")

DataFrame或DataSet对象.write.table("路径")

DataFrame或DataSet对象.write.text("路径")

 

写法二:

DataFrame或DataSet对象.write.fomat("jdbc").中间可能其他的参数.save()

ps:典型的是saveMode模式 即 mode方法

例如:df.write.mode(SaveMode.Append).save(“f://bigdata/out”)  此处省略了format

若不执行format默认是parquet格式

 

二、SparkSQL读写MySQL

2.1 Spark读取MySQL

两种方式

package scalaBase.day15

import java.util.Properties

import org.apache.spark.sql.{DataFrame, SparkSession}

object SparkSQLReadMySQL {
  def main(args: Array[String]): Unit = {
    val spark = SparkSession.builder().appName("SparkSQLReadMySQL").master("local").getOrCreate()
   
    //方法一
    val url="jdbc:mysql://localhost:3306/test"
    val prop = new Properties()
    prop.put("user","root")
    prop.put("password","")

    val df = spark.read.jdbc(url,"student",prop)
    // df.show()

    

    //方法二
    val df2 = spark.read.format("jdbc")
      .option("url", "jdbc:mysql://localhost:3306/test")
      .option("dbtable", "student")
      .option("user", "root")
      .option("password", "")
      .load()
    df2.show()


    spark.stop()



  }
}

2.2 SparkSQL写数据到MySQL

列举两种方法

package scalaBase.day15

import java.util.Properties

import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.sql.{Row, SaveMode, SparkSession}
import org.apache.spark.sql.types.{IntegerType, StringType, StructField, StructType}

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

    val conf = new SparkConf().setMaster("local").setAppName("sparkWriteMySQL")
    val sc = new SparkContext(conf)
    val spark = SparkSession.builder().config(conf).getOrCreate()

    val rdd = sc.textFile("data/people.txt").map(x => {
      val f = x.split(",")
      (Row(f(0), f(1).trim.toInt))
    })

    val schema = StructType(
      Array(
        StructField("name", StringType, false),
        StructField("age", IntegerType, true)
      )
    )

    import  spark.implicits._
    val df = spark.createDataFrame(rdd,schema)



    //表可以不存在,通过读取的数据可以直接生成表
    //方法一
    val url="jdbc:mysql://localhost:3306/test"
    val prop = new Properties()
    prop.put("user","root")
    prop.put("password","")
  // df.write.jdbc(url,"people",prop)



    //方法二
    df.write.format("jdbc")
        .option("url","jdbc:mysql://localhost:3306/test")
        .option("dbtable","people")
        .option("user","root")
        .option("password","")
        .mode(SaveMode.Append)   //这一条不是必须的
        .save()
    
    spark.stop()
  }
}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值