项目创建 流程

本文涉及的产品
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
云原生数据库 PolarDB PostgreSQL 版,标准版 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月前
|
机器学习/深度学习 Linux 计算机视觉
项目介绍
【7月更文挑战第30天】项目介绍。
41 1
|
Python
项目画虎
用Python语言编写项目,进行画虎。
47 0
|
监控 UED
项目0-1 #111
项目0-1 #111
78 0
|
存储 JSON C++
VS配置新项目
VS配置新项目
|
存储 NoSQL 前端开发
项目总结
VUE的MVVM模式: Model:负责数据存储–script View:负责页面展示–template标签 View Model:负责业务逻辑处理(比如Ajax请求等),对数据进行加工后交给视图展示–script
181 0
|
JavaScript 前端开发
项目生成
项目生成
161 0
|
资源调度
插件开发步骤
插件开发步骤
138 0