项目创建 流程

本文涉及的产品
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
简介:

使用工具 idea
一个项目有很多功能 它可以包含很多方面 为此 我们首先要做的就是分析需求根据需求来创建项目 但是发现一个项目中含有的东西如果放在一起的话就会变得十分乱
哪么 对于这个项目来讲 就需要将它按功能划分成模块 比如一个大数据项目 有web 部分 数据部分 整个流程 就是 从web或者关系型数据库得到数据 然后经过分析处理 然后变成可视化图形数据 那么 采集数据就需要分为一个模块 在这个模块 包括例如sqoop的连接 创建 启动 过程 也包含数据的导入导出过程 web部分展示数据也含有将数据记录到关系型数据库中
值得注意的是 再maven项目结构上 需要在总项目的pom中

<packaging>pom</packaging>

项目结构:
image

这个类创建了两个方法 分别是连接sqoop连接hdfs 和 sqoop 连接PostgreSql数据库

package com.zhiyou100.sqoop.link

import org.apache.sqoop.client.SqoopClient
import org.apache.sqoop.model.{MConfig, MInput, MLink}

object LinkCreator {

  val url="http://master:12000/sqoop/"
  val client =new SqoopClient(url)

  //创建hdfslink
  //创建postgresql link link


  def createHdfsLink()={

    val hdfsLink =client.createLink("hdfs-connector")
    val linkConfig =hdfsLink.getConnectorLinkConfig()
    val configs:java.util.List[MConfig] =linkConfig.getConfigs()
    printLinkConfigruation(configs)

//    for(i<-0 until configs.size()){
//      val inputs:java.util.List[MInput[_]]=configs.get(i).getInputs
//      for(j<-0 until inputs.size()){
//        val input =inputs.get(j)
//        println(input)
//      }
//    }
    linkConfig.getStringInput("linkConfig.uri").setValue("hdfs://master:9000")
    linkConfig.getStringInput("linkConfig.confDir").setValue("/opt/SoftWare/Hadoop/hadoop-2.7.3/etc/hadoop")
    hdfsLink.setName("btrip_hdfs")
    val status =client.saveLink(hdfsLink)
    getStatus(status.canProceed)
//
//    if(status.canProceed){
//      println("hdfs_link 创建成功")
//    }else{
//      println("hdfs_link 常见失败")
//    }
//    for(config:MConfig<-configs) {
//      val inputs :java.util.List[MInput[_]]=config.getInputs()
//      for(input:)
//      println()
//    }
  }

  def createPostgresqlLink()={
val pglink =client.createLink("generic-jdbc-connector")
    val linkConfig =pglink.getConnectorLinkConfig()
    printLinkConfigruation(linkConfig.getConfigs)
    linkConfig.getStringInput("linkConfig.jdbcDriver").setValue("org.postgresql.Driver")
    linkConfig.getStringInput("linkConfig.connectionString").setValue("jdbc:postgresql://192.168.6.168:5432/WscHMS")
    linkConfig.getStringInput("linkConfig.username").setValue("postgres")
    linkConfig.getStringInput("linkConfig.password").setValue("123456")
    linkConfig.getStringInput("dialect.identifierEnclose").setValue("5")
    pglink.setName("link_postgresql")
    val status =client.saveLink(pglink)
    getStatus(status.canProceed)



  }

  def printLinkConfigruation(configs:java.util.List[MConfig]) ={

    for(i<-0 until configs.size()){
      val inputs:java.util.List[MInput[_]]=configs.get(i).getInputs
      for(j<-0 until inputs.size()){
        val input =inputs.get(j)
        println(input)
      }
    }
  }

  def getStatus(statuscanProceed:Boolean)={
    if(statuscanProceed){
      println("hdfs_link 创建成功")
    }else{
      println("hdfs_link 常见失败")
    }
  }
  def main(args: Array[String]): Unit = {
//    createHdfsLink()
    createPostgresqlLink()
  }
}

创建job

def createJob()={

  val sql=
    """
      |select *
      | from ***
      | ${CONDITIONS}
      |
    """.stripMargin
  val job=client.createJob("link_postgresql","btrip_hdfs")
  job.setName("postgreSql")
  val fromConfig =job.getFromJobConfig()
  val toConfig =job.getToJobConfig()
  showFromJobConfig(fromConfig)
 showToJobConfig(toConfig)
  fromConfig.getStringInput("fromJobConfig.schemaName").setValue("wsc")
  fromConfig.getStringInput("fromJobConfig.tableName").setValue("tb_company")
  fromConfig.getStringInput("fromJobConfig.sql").setValue(sql)
  fromConfig.getStringInput("fromJobConfig.boundaryQuery").setValue("false")
  fromConfig.getStringInput("fromJobConfig.partitionColumn").setValue("company_id")
//  fromConfig.getStringInput("dialect.identifierEnclose").setValue("")

  toConfig.getEnumInput("toJobConfig.outputFormat").setValue("TEXT_FILE")
  toConfig.getEnumInput("toJobConfig.compression").setValue("NONE")
  toConfig.getStringInput("toJobConfig.outputDirectory").setValue("/sqoop/btrip_pg")
  toConfig.getBooleanInput("toJobConfig.appendMode").setValue(true)
//  job.setName("btrip_company")
  val status =client.saveJob(job)
  if(status.canProceed){
    println("job 创建成功")
  }else{
    println("job 创建失败")
  }
}
相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
8月前
|
消息中间件 NoSQL 中间件
项目描述
项目怎么写? 1、靠技术取胜 2、项目描述
61 0
|
9月前
|
Python
项目画虎
用Python语言编写项目,进行画虎。
29 0
|
10月前
|
前端开发 JavaScript 微服务
项目-已完成
ERP 1. erp_parent (Java-后端) 2. erp_web (Java-前端)
53 0
|
12月前
|
搜索推荐 开发者
关于AskBlog项目存在的问题
关于AskBlog项目存在的问题
55 0
|
12月前
项目练习2
项目练习2
|
12月前
|
存储 JSON C++
VS配置新项目
VS配置新项目
|
Ubuntu 编译器 开发工具
ShiftMediaProject项目介绍
ShiftMediaProject项目介绍
149 0
|
微服务
项目配置
项目配置
88 0
|
XML 运维 Java
项目里的各种配置,你都了解吗?
项目里的各种配置,你都了解吗?
161 0
|
JavaScript 前端开发
前端实践小项目
哈喽 ~ 大家好鸭!这篇我们来看看前端实践小项目第一篇 “五星好评与暂停取值”(底部有源代码)
212 0
前端实践小项目