记录-bigdata-使用Scala语言,使用Spark抽取MySQL指定数据表中的数据到HIVE的ODS层的表中

有问题可以私聊我交流

我这里是完成编码之后,打包发送到集群上运行的!!!

1.使用IDEA创建MAVEN项目

pom配置如下

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.tledu</groupId>
  <artifactId>llll</artifactId>
  <version>1.0-SNAPSHOT</version>
  <name>${project.artifactId}</name>
  <description>My wonderfull scala app</description>
  <inceptionYear>2018</inceptionYear>
  <licenses>
    <license>
      <name>My License</name>
      <url>http://....</url>
      <distribution>repo</distribution>
    </license>
  </licenses>

  <properties>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
    <encoding>UTF-8</encoding>
    <scala.version>2.11.11</scala.version>
    <scala.compat.version>2.11</scala.compat.version>
    <spec2.version>4.2.0</spec2.version>
  </properties>

  <dependencies>
    <dependency>
      <groupId>org.scala-lang</groupId>
      <artifactId>scala-library</artifactId>
      <version>${scala.version}</version>
    </dependency>


    <dependency>
      <groupId>org.apache.spark</groupId>
      <artifactId>spark-core_${scala.compat.version}</artifactId>
      <version>2.3.2</version>
      <scope>provided</scope>
    </dependency>

    <dependency>
      <groupId>org.apache.spark</groupId>
      <artifactId>spark-sql_${scala.compat.version}</artifactId>
      <version>2.3.2</version>
      <scope>provided</scope>
    </dependency>

    <dependency>
      <groupId>org
1. 准备工作 在使用Spark抽取MySQL数据之前,需要进行一些准备工作。首先需要安装SparkMySQL驱动程序,并设置好环境变量。 其次,需要创建好MySQL数据库,并在其中创建需要抽取数据数据表。 最后,需要创建好目标分区,并在其中添加好分区。 2. 编写Spark程序 以下代码展示了如何使用Spark抽取MySQL数据,并将其写入到分区中: ```scala import org.apache.spark.SparkConf import org.apache.spark.SparkContext import org.apache.spark.sql.SQLContext import org.apache.spark.sql.SaveMode object MysqlToHive { def main(args: Array[String]) { val conf = new SparkConf().setAppName("MysqlToHive") val sc = new SparkContext(conf) val sqlContext = new SQLContext(sc) //设置MySQL连接参数 val url = "jdbc:mysql://localhost:3306/test" val driver = "com.mysql.jdbc.Driver" val username = "root" val password = "root" val database = "test" val table = "user" //设置Hadoop配置参数 val hadoopConf = sc.hadoopConfiguration hadoopConf.set("mapreduce.input.fileinputformat.input.dir.recursive", "true") //读取MySQL原始数据 val df = sqlContext.read.format("jdbc").options( Map("url" -> url, "driver" -> driver, "dbtable" -> table, "user" -> username, "password" -> password, "useSSL" -> "false") ).load() //取出最新数据 val latestData = df.groupBy("id").agg( max("update_time").alias("update_time") ) //将最新数据写入Hive分区中 latestData.write.partitionBy("date").mode(SaveMode.Append).format("parquet").saveAsTable("ods.user") sc.stop() } } ``` 在上述代码中,首先通过读取MySQL数据表获取原始数据,然后使用groupBy和agg操作进行分组和聚合,得到最新的数据。最后将最新数据写入Hive分区中。 3. 运行Spark程序 编写好Spark程序之后,就可以通过以下命令来运行程序了: ``` spark-submit --master local[*] --class com.example.MysqlToHive mysql-to-hive.jar ``` 其中,--master参数使用本地模式运行程序,--class参数指定运行的类名,mysql-to-hive.jar示编译后的jar包。运行程序后,就可以从MySQL数据表抽取数据,并将其写入Hive分区中了。
评论 8
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值