本题源于2023年全国职业技能大赛(大数据技术赛项)第九套任务书 子任务一 第一小题
想要了解更多,可联系作者
625338393 v请备注来意,模块A环境搭建,模块B离线数据处理,模块E数据可视化
子任务一:数据抽取
题目:
环境说明:用于区分每套任务书数据,我在Hive中建库,此库Taskbook09_ods对应任务书中的ods库,其他同理
前期任务准备
val conf = new SparkConf().setMaster("local").setAppName("a")
val spark = SparkSession.builder().config(conf).enableHiveSupport().getOrCreate()
// 开启动态分区
spark.conf.set("hive.exec.dynamic.partition.mode", "nonstrict")
// 关闭日志打印
spark.sparkContext.setLogLevel("OFF")
分析任务书,抽取MySQL库中的EnvironmentData的增量数据进入ods库中的environmentdata表
// 定义MySQL库数据,读取MySQL数据库中enviromentdata表
val df = spark.read
.format("jdbc")
.option("driver", "com.mysql.jdbc.Driver")
.option("url", "jdbc:mysql://master:3306/shtd_industry")
.option("user", "root")
.option("password", "1234")
.option("dbtable", "environmentdata")
.load()
// 创建临时表
df.createTempView("ods")
// 查询临时表数据
val dataframe = spark.sql(
"""
|select * from ods
|""".stripMargin
)
// 展示数据
dataframe.show()
// 添加分区字段,分区字段为前一日
val df2 = dataframe.withColumn("etldate", date_format(date_sub(current_date, 1), "yyyyMMdd"))
df2.show()
// 写入ods.environmentdata
df2.write.mode("append")
.partitionBy("etldate")
.saveAsTable("taskbook09_ods.environmentdata")
// 打印分区字段
spark.sql("show partitions taskbook09_ods.environmentdata ").show()