iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >大数据之使用Spark增量抽取MySQL的数据到Hive数据库(1)
  • 533
分享到

大数据之使用Spark增量抽取MySQL的数据到Hive数据库(1)

大数据hivesparkmysqlscala 2023-10-18 18:10:01 533人浏览 八月长安
摘要

目录 前言 题目: 一、读题分析 二、处理过程 1.采用SparkSQL使用max函数找到最大的日期然后转换成时间类型在变成字符串 2.这里提供除了SQL方法外的另一种过滤不满足条件的方法 三、重难点分析 总结  前言 本题来源于全国职业

目录

前言

题目:

一、读题分析

二、处理过程

1.采用SparkSQL使用max函数找到最大的日期然后转换成时间类型在变成字符串

2.这里提供除了SQL方法外的另一种过滤不满足条件的方法

三、重难点分析

总结 


前言

本题来源于全国职业技能大赛之大数据技术赛项电商赛题-离线数据处理-抽取

题目:


提示:以下是本篇文章正文内容,下面案例可供参考(使用Scala语言编写) 

一、读题分析

涉及组件:Mysql,Hive,SCALA,spark

涉及知识点:

  1. Spark读取数据库数据
  2. DataFrameapi的使用(重点)
  3. Spark写入数据库数据
  4. Hive数据库的基本操作
  5. 增量数据的概念(思考:与全量数据有什么区别?)

二、处理过程

  与全量数据类似,唯一不同的点在于抽取增量的数据只是在全量数据中的一部分(形象来说)。个人认为,这样在实际应用中,抽取增量数据比抽取全量数据,更节省时间,带宽,硬件处理频率。总来说,抽取增量数据而不是全量数据的目的就是减少资源的浪费。

1.采用Sparksql使用max函数找到最大的日期然后转换成时间类型在变成字符串

import org.apache.spark.sql.SparkSessionimport java.text.SimpleDateFormatimport java.util.{Calendar, Properties}object MysqlToHive {  def main(args: Array[String]): Unit = {    import org.apache.spark.sql.SaveMode    import org.apache.spark.sql.functions.lit    val spark =SparkSession.builder().appName("mysqltoHive").master("spark://bigdata1:7077").enableHiveSupport().getOrCreate()    //    读取mysql的配置    val jdbcurl = "jdbc:mysql://bigdata1:3306/db"    val tablename = "table1"    val properties = new Properties()    properties.setProperty("user", "root")    properties.setProperty("password", "123456")    properties.setProperty("driver", "com.mysql.jdbc.Driver")    //    读取mysql数据创建dataframe    val mysqlDF = spark.read.jdbc(jdbcurl, tablename, properties)    mysqlDF.createOrReplaceTempView("mysqldata")    //    读取hive数据ods库中最大的时间    spark.sql("use ods")    val hiveDF = spark.read.table("ods.table1")    hiveDF.createOrReplaceTempView("hivedata")    //    获取最大值    val maxValue = spark.sql("select max(modified_time) from hivedata").head().getTimestamp(0).toString     println("Hive最大的时间为:" + maxModifiedTime)    //    3. 使用Spark SQL查询获取customer_inf表中modified_time的最大值。    //    4. 使用head()方法获取结果集中的第一行数据。    //    5. 使用getTimestamp(0)方法获取第一列数据的Timestamp类型值。    //    6. 使用toString()方法将Timestamp类型值转换为字符串类型。    //    7. 打印最大修改时间的字符串值。    //    找到增量数据    val resultDF = spark.sql(s"select * from mysqldata where momdified_time > '$maxValue'")    //    取得昨天的日期    //    法1:    val sdf = new SimpleDateFORMat("yyyyMMdd")    val str = sdf.format(Calendar.getInstance().getTime.getTime - 24 * 60 * 60 * 1000)    //    法2:    val str = new SimpleDateFormat("yyyyMMdd").format(Calendar.getInstance().getTime.getTime - 24 * 60 * 60 * 1000)    val reDF = resultDF.withColumn("etl_date", lit(str))    reDF.write.mode(SaveMode.Append).partitionBy("etl_date").saveAsTable("ods.table1")  }}

2.这里提供除了SQL方法外的另一种过滤不满足条件的方法

    //    这里可以写死来模拟增量数据    //    val givenTime = "2022-08-23 00:00:00"    val maxValue = spark.sql("select max(modified_time) from hivedata").head().getTimestamp(0).toString    //    gt获取比givenTime时间大的数据    //    lt小于    val dataf = df.filter(col("modified_time").lt(max)).toDF()

三、重难点分析

  1. 增量数据与全量数据的不同
  2. SparkSQL函数的使用
  3. 解决增量数据的方法

总结 

什么是全量数据、增量数据?

全量数据和增量数据是在数据库系统迁移时的概念。

1.全量数据:

        当前需要迁移的数据库系统的全部数据。

2.增量数据:

        在数据库系统迁移过程中,对比原数据,新产生的数据即为增量数据。

原创作品如需引用请标明出处

来源地址:https://blog.csdn.net/qq_36920766/article/details/130386324

您可能感兴趣的文档:

--结束END--

本文标题: 大数据之使用Spark增量抽取MySQL的数据到Hive数据库(1)

本文链接: https://www.lsjlt.com/news/431594.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 大数据之使用Spark增量抽取MySQL的数据到Hive数据库(1)
    目录 前言 题目: 一、读题分析 二、处理过程 1.采用SparkSQL使用max函数找到最大的日期然后转换成时间类型在变成字符串 2.这里提供除了SQL方法外的另一种过滤不满足条件的方法 三、重难点分析 总结  前言 本题来源于全国职业...
    99+
    2023-10-18
    大数据 hive spark mysql scala
  • 大数据之使用Spark全量抽取MySQL的数据到Hive数据库
    文章目录 前言 一、读题分析 二、使用步骤 1.导入配置文件到pom.xml 2.代码部分 三、重难点分析 总结 前言 本题来源于全国职业技能大赛之大数据技术赛项赛题-离线数据处理-数据抽取(其他暂不透露) 题目:编写S...
    99+
    2023-09-17
    hive spark 大数据 数据库 scala
  • 编写Scala代码,使用Spark讲Mysql数据表中的数据抽取到Hive的ODS层
    编写Scala代码,使用Spark讲Mysql数据表中的数据抽取到Hive的ODS层 抽取MySQL的metast库中Production表的全量数据进入Hive的ods库中表production,字...
    99+
    2023-09-22
    scala spark mysql
  • 抽取oracle数据到mysql数据库的实现
    这篇文章给大家介绍抽取oracle数据到mysql数据库的实现,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1、要抽取mysql表、字段及过滤条件的配制文件imp_data.sql2、...
    99+
    2024-04-02
  • spark怎么读取mysql数据库数据
    在Spark中读取MySQL数据库数据,可以使用Spark的DataFrame API和JDBC连接器来实现。以下是一种常见的方法:...
    99+
    2024-04-09
    spark mysql
  • MySQL数据库高级数据操作之新增数据
    目录多数据插入主键冲突1、主键冲突更新2、主键冲突替换蠕虫复制多数据插入 只要写一次insert,可以插入多条数据 基本语法: insert into 表名 [(字段列表)] val...
    99+
    2024-04-02
  • MySQL数据库怎么增量恢复数据
    本篇内容介绍了“MySQL数据库怎么增量恢复数据”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、场景概述...
    99+
    2024-04-02
  • hadoop数据库怎么读取大量数据
    Hadoop是一个开源的分布式存储和计算框架,可以帮助处理大量数据。要读取Hadoop数据库中的大量数据,可以使用Hadoop的Ma...
    99+
    2024-03-04
    hadoop
  • MySQL数据库高级数据操作之怎么新增数据
    本篇内容主要讲解“MySQL数据库高级数据操作之怎么新增数据”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL数据库高级数据操作之怎么新增数据”吧!多数据插入只要写一次insert,可以插...
    99+
    2023-06-30
  • 数据库迁移之mysql到达梦数据库
    1 背景介绍 由于业务需求要求数据库国产化,因此将数据从mysql数据库中迁移到国产达梦数据库中。将mysql中的每个库迁移到达梦不同模式下,下面为详细过程。 2 具体步骤 (1)安装达梦客户端工具 (2)点击选择DM管理工具 (3)创建...
    99+
    2023-08-20
    数据库
  • 数据上云,应该选择全量抽取还是增量抽取?
    作者:向师富 转自:阿里巴巴数据中台官网 https://dp.alibaba.com 概述数据抽取是指从源数据抽取所需要的数据, 是构建数据中台的第一步。 数据源一般是关系型数据库,近几年,随着移动互联...
    99+
    2024-04-02
  • php如何导入大量数据到数据库
    要导入大量数据到数据库,可以使用PHP中的数据库扩展(如MySQLi或PDO)来执行批量插入操作。以下是一个示例代码来导入大量数据到...
    99+
    2024-04-02
  • 使用sqoop从Hive导出数据到MySQL
    启动hadoop:start-all.sh。 启动mysql:support-files/mysql.server start。 启动hive:hive。 在hive中创建表。 (学生信息:学号xh,姓名xm)xsxx: create ...
    99+
    2023-10-22
    hadoop hive 大数据
  • mysql如何查看数据库数据量大小
    可以通过以下SQL语句查看数据库的数据量大小: SELECT table_schema "Database Nam...
    99+
    2024-04-11
    mysql
  • mysql数据库增量数据恢复的方法是什么
    本篇内容介绍了“mysql数据库增量数据恢复的方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、工作场景(1)MySQL数据库每晚...
    99+
    2023-06-02
  • 使用datax实现增量同步mysql数据库数据(定时任务)
    使用datax来做数据全量同步很简单,增量同步该怎样做呢,接下来就一起试试吧 下载datax(前提CentOS已安装jdk等运行环境),解压(路径自定),使用centos7自带的python执行datax.py,运行自检 wget http...
    99+
    2023-09-22
    python json 开发语言 数据库
  • 从Oracle用goldengate抽取数据到kafka
    Goldengate到kafka配置详解 环境介绍: 源端数据库版本 源端OGG版本 ...
    99+
    2024-04-02
  • 怎么使用数据库查询1秒找到需要的数据
    怎么使用数据库查询1秒找到需要的数据,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1 简介学习Dash中渲染网页静态表格的常用方法,并在最后的例子中教大家如何配合Dash,简简...
    99+
    2023-06-15
  • python如何实现Mysql数据库批量新增数据
    本篇内容主要讲解“python如何实现Mysql数据库批量新增数据”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“python如何实现Mysql数据库批量新增数据”吧!一、批量插入数据的场景在进行...
    99+
    2023-06-29
  • 如何使用 SeaTunnel 同步 MySQL 数据到 Hive
    第一步:环境准备 Java 8 或 11 并配置JAVA_HOME Git  Maven 第二步:下载SeaTunnel并安装连接器 下载地址:https://seatunnel.apache.org/download/...
    99+
    2023-09-24
    hive 大数据 hadoop
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作