提示:本文采用IDEA编写代码
操作步骤:
一、在linux上
- 搭建好spark,推荐一篇较好的文章:spark3.3.0安装&部署过程。
注:如果需要运行yarn模式,在spark-env.sh文件末尾添加:
export YARN_CONF_DIR=/opt/hadoop-3.1.3/etc/hadoop
export HADOOP_CONF_DIR=/opt/hadoop-3.1.3/etc/hadoop
- 搭建完spark集群后,在spark的jars目录下放入mysql驱动jar包。
- 在spark的conf目录下放入hive-site.xml文件。
二、在IDEA上
1.创建一个maven项目
2.安装scala插件
3.在项目结构的全局库导入scala至项目
4.在pom文件导入以下两个依赖
<dependencies>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.12</artifactId>
<version>3.3.1</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-sql_2.12</artifactId>
<version>3.3.1</version>
</dependency>
</dependencies>
5.编写代码
涉及到hive3.x版本的动态分区,仅供参考
package com.test
import org.apache.spark.SparkConf
import org.apache.spark.sql.SparkSession
import java.text.SimpleDateFormat
import java.util.{Calendar, Properties}
object lx1 {
def main(args: Array[String]): Unit = {
// 建立和spark框架的连接及定义业务名称
val conf = new SparkConf().setMaster("local[*]").setAppName("数据抽取")
val spark = SparkSession.builder().enableHiveSupport().config(conf).getOrCreate()
//spark读取mysql
val df = spark.read
.format("jdbc")
.option("url", "jdbc:mysql://master:3306/test?useUnicode=true&characterEncoding=utf-8")
.option("driver", "com.mysql.cj.jdbc.Driver")
.option("user", "root")
.option("password", "123")
.option("dbtable", "orders")
.load()
df.createOrReplaceTempView("v_orders")
// 获取时间
val day = Calendar.getInstance()
day.add(Calendar.DATE, -2)
val sdf = new SimpleDateFormat("yyyy-MM-dd")
val yesDate = sdf.format(day.getTime)
//开启动态分区功能
spark.sqlContext.setConf("hive.exec.dynamic.partition.mode", "nonstrict")
//把读取的数据写入hive
spark.sql("insert into table test.d_p_t2 " +
"partition(custkey) select orderkey, orderdate,custkey " +
" from v_orders where orderdate='" + yesDate + "'")
spark.stop()
}
}
6.将写好的代码打成jar包
推荐一篇较好的文章:IDEA 导出jar包
7.将jar包放入linux里执行
注意:如果运行yarn模式,要将hadoop集群启动起来
文章来源:https://www.toymoban.com/news/detail-412880.html
总结
本文仅仅简单介绍了操作步骤,很多经验都来自于b站和博客上的大佬,以及身边的同学和老师转化而来的,赶在2022年最后一天做出总结,希望对大家也有帮助文章来源地址https://www.toymoban.com/news/detail-412880.html
到了这里,关于编写 Scala 工程代码,将 MySQL 库中的表增量抽取到 Hive库中对应表中的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!