职业技能大赛-大数据-数据抽取

一、 数据抽取


任务一:数据抽取
使用Spark工具,将MySQL的shtd_store库中表CUSTOMER、NATION、PART、PARTSUPP、REGION、SUPPLIER
的数据全量抽取到Hive的ods库中对应表customer,nation,part,partsupp,region,sup

1、抽取shtd_store库中CUSTOMER的全量数据进入Hive的ods库中表customer。 * 字段排序、类型不变,同时添加静态分区,分区字段类型为String, * 且值为当前比赛日的前一天日期(分区字段格式为yyyyMMdd)。 * 并在hive cli执行show partitions ods.customer命令, * 将Spark提交命令及hive cli的执行结果分别截图复制粘贴至对应报告中;

object BC_Extract_Clean {
  def main(args: Array[String]): Unit = {
    val spark = SparkSession.builder()
      .master("local[*]")
      .appName("ods_dwd")
      .config("hive.exec.dynamic.partition", "true")
      .config("hive.exec.dynamic.partition.mode", "nonstrict")
      .config("spark.sql.sources.partitionOverwriteMode", "dynamic")
      .config("spark.sql.warehouse.dir", "hdfs://xueai:8020")
      .config("hive.metastore.uris", "thrift://xueai:9083/user/hive/warehouse")
      .config("java.jdo.option.ConnectionDriverName", "com.mysql.jdbc.Driver")
      .config("spark.sql.shuffle.ConnectionUrl", "jdbc:mysql://xueai:3306/hive?createDatabaseIfNoExist=UTF-8")
      .enableHiveSupport()
      .getOrCreate()

        Test1_Cq(spark)
        spark.sql("show partitions ods.customer").show()
}
  def Test1_Cq(spark: SparkSession): Unit = {
    val MyURL = "jdbc:mysql://xueai:3306/shtd_store"
    val jdbcMap = Map(
      "url" -> MyURL,
      "dbtable" -> "CUSTOMER",
      "user" -> "root",
      "password" -> "admin"
    )
    val df1 = ETL_tool.MysqlJDBC(spark, jdbcMap)
    val df2 = df1.withColumn("etl_date", lit("20240303"))
    val hiveOptions = Map("db" -> "ods", "tb" -> "customer", "lie" -> "etl_date")
    ETL_tool.hiveLoad(spark, df2, hiveOptions, "overwrite")
  }

先启动hdfs,在执行hive --service merastore,后运行代码

后续会一题一题发布,请关注期待

  • 14
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值