美文网首页
spark 中创建外部表工具方法

spark 中创建外部表工具方法

作者: 夜空最亮的9星 | 来源:发表于2019-08-28 15:16 被阅读0次

import scala.collection.JavaConversions._
import java.util

/**
  *
  *
  *
  * def tag_categoryTableColumns() = {
  *
  * val columnsMap = new util.LinkedHashMap[String, String]()
  *     columnsMap.put("tag_id", "string")
  *     columnsMap.put("tag_group", "string")
  *     columnsMap.put("lable_lv1", "string")
  *     columnsMap.put("lable_lv2", "string")
  *     columnsMap.put("lable_lv3", "string")
  *     columnsMap.put("lable_lv4", "string")
  *     columnsMap.put("show_name", "string")
  *
  *
  * columnsMap
  * }
  *
  */


object HiveDBUtils {


  /**
    * 创建外部分区表
    * CREATE EXTERNAL TABLE IF NOT EXISTS app(tag_id string,lable_lv1 string,lable_lv2 string,lable_lv3 string,lable_lv4 string) PARTITIONED BY (year string) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' LOCATION '/user/app'
    */

  def createExternalTableWithPartition(tableName:String,columnsMap :util.LinkedHashMap[String, String],partitionMap:java.util.LinkedHashMap[String, String],location:String,terminator:String) ={

    val colums = parseForTableColoums(columnsMap)

    val partition = parseForTableColoums(partitionMap)
    val createHqlStatement: String = "CREATE EXTERNAL TABLE IF NOT EXISTS "
      .concat(tableName)
      .concat(colums)
      .concat(" PARTITIONED BY ")
      .concat(partition)
      .concat(" ROW FORMAT DELIMITED FIELDS TERMINATED BY ")
      .concat("'")
      .concat(terminator)
      .concat("'")
      .concat(" LOCATION ")
      .concat("'")
      .concat(location)
      .concat("'")
    createHqlStatement

  }


  /**
    * 创建无分区外部表
    *
    * CREATE EXTERNAL TABLE IF NOT EXISTS app(tag_id string,tag_group string,lable_lv1 string,lable_lv2 string,lable_lv3 string,lable_lv4 string,show_name string) ROW FORMAT DELIMITED FIELDS TERMINATED BY  ','  LOCATION  '/user/app'
    */




  def createExternalTableNoPartition(tableName:String,columnsMap :util.Map[String, String],location:String,terminator:String) ={

    val columns = parseForTableColoums(columnsMap)

    val createHqlStatement: String = "CREATE EXTERNAL TABLE IF NOT EXISTS "
      .concat(tableName)
      .concat(columns)
      .concat(" ROW FORMAT DELIMITED FIELDS TERMINATED BY ")
      .concat(" '")
      .concat(terminator)
      .concat("' ")
      .concat(" LOCATION ")
      .concat(" '")
      .concat(location)
      .concat("' ")
    createHqlStatement

  }

  def parseForTableColoums(keywords: java.util.Map[String, String]) ={

    var keywordsHandled: String = ""
    for ((field, desc) <- keywords) {

      keywordsHandled += field
        .concat(" ")
        .concat(keywords.get(field))
        .concat(",")
    }

    keywordsHandled = keywordsHandled.reverse.replaceFirst(",", "").reverse

    "(".concat(keywordsHandled).concat(")")

  }

  def parseForTableColoumsName(keywords: java.util.Map[String, String]) = {

    var keywordsHandled: String = ""

    for ((field, desc) <- keywords) {
      keywordsHandled += field
        .concat(",")
    }

    keywordsHandled = keywordsHandled.reverse.replaceFirst(",", "").reverse

    " ".concat(keywordsHandled).concat(" ")

  }

相关文章

  • spark 中创建外部表工具方法

  • hive on spark 小文件问题

    hive on spark 小文件问题 问题描述 创建hive外部表后,通过insert语句(其中包含了group...

  • 6_CSS样式_选择器

    插入样式的三种方法 内联样式表(行内) 内部样式表(style中) 外部样式表创建一个外部样式表在head中使用l...

  • 日志分析

    创建外部表 首先启动gpfdist服务: 查看是否启动成功: 创建外部表 进入云数据库 创建外部表 注意,这里端口...

  • Spark-RDD的创建

    在Spark中创建RDD的方式有三种:1)从集合中创建;2)从外部存储创建。3)从其他RDD转化创建 从集合中创建...

  • Execution Error,return code 2 fr

    背景:工作中,创建 hbase 映射 hive 外部表,执行sql语句向hive外部表中 insert 数据时,出...

  • hdfs,hive大数据的存储管理和显示管理

    1.Hive中内部表和外部表及其对应的hdfs路径 1.1 Hive内部表和外部表的区别 Hive 创建内部表时,...

  • Hive 数据库中的表

    Hive 数据库中的表分为:内部表和外部表。定义:创建表的时候,如果加上 external 关键字,就是外部表,否...

  • Spark监控

    有几种方法来监视Spark应用程序:Web UI,metrics和外部工具。 Web界面 每个SparkConte...

  • hive进阶学习

    创建hive表常用语句: 修改hive表名称: 内部表 vs 外部表: 创建分区表以及补充操作: hive中查询介...

网友评论

      本文标题:spark 中创建外部表工具方法

      本文链接:https://www.haomeiwen.com/subject/mvtmectx.html