项目创建 流程

本文涉及的产品
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
简介:

使用工具 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数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
4月前
|
开发工具 git 开发者
[译] 🙏 请把 .gitattributes 加入你的项目
[译] 🙏 请把 .gitattributes 加入你的项目
[译] 🙏 请把 .gitattributes 加入你的项目
16activiti - 流程管理定义(查看流程图附件)
16activiti - 流程管理定义(查看流程图附件)
49 0
|
消息中间件 NoSQL 中间件
项目描述
项目怎么写? 1、靠技术取胜 2、项目描述
132 0
|
开发框架 .NET API
如何在现有项目中使用`Masa MiniApi`?
如何在现有项目中使用`Masa MiniApi`?
86 0
如何在现有项目中使用`Masa MiniApi`?
|
前端开发 JavaScript 微服务
项目-已完成
ERP 1. erp_parent (Java-后端) 2. erp_web (Java-前端)
83 0
|
测试技术
测试一个项目的流程
测试一个项目的流程
|
SQL 前端开发 数据库
如何在码云上Down一个项目
如何在码云上Down一个项目
如何在码云上Down一个项目
Cookiecutter通过项目模板创建项目
Cookiecutter通过项目模板创建项目
100 0