SparkSQL抽取Mysql全量数据到Hive动态分区表中

  • Post author:
  • Post category:mysql



部分概念内容:hive学习(七)——创建动态分区_BigDate_小学生的博客-CSDN博客

进阶篇:

spark增量抽取MySQL中的数据存入hive动态分区表(2)_月亮给我抄代码的博客-CSDN博客

前言:我这里把hive-site.xml文件放在了resource目录中,相关配置及依赖在后面。


不要用中文值作为静态分区或动态分区字段!!!

package my_project

import org.apache.spark.sql.SparkSession

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

    //TODO 动态分区表demo

    val spark: SparkSession = SparkSession
      .builder()
      .appName("my_work01")
      .master("local[*]")
      .enableHiveSupport()
      .getOrCreate()

    //读取MySQL数据,创建临时表
    spark.read
      .format("jdbc")
      .option("driver", "com.mysql.jdbc.Driver")
      .option("url", "jdbc:mysql://localhost:3306/spark_db")
      .option("user", "root")
      .option("password", "456789")
      .option("dbtable", "movies")
      .load()
      .createOrReplaceTempView("datas")

    // TODO 以下两个参数必须要在建表前使用
    //(开启动态分区,默认为true)
    spark
      .sql(
        """
        |set hive.exec.dynamic.partition=true
        |""".stripMargin
      )

    //(动态分区模式,默认为strict——必须有一列为静态分区,所以这里改成 nonstrict)
    spark
      .sql(
        """
                |set hive.exec.dynamic.partition.mode=nonstrict
                |"



版权声明:本文为weixin_46389691原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。