乐趣区

关于大数据:Excel数据模型自动生成Hive建表语句

最近在「空白女侠」公号上看到她答复了大家会困扰的精力问题,比方为什么我(空白女侠)能同时做那么多事件,精力那么充分?工作中遵循一个真谛:

简单的事件简单化,简略的事件标准化,规范的事件流程化,流程化的事件工具化,工具化的事件自动化,无奈自动化的事件外包化。

数据开发过程中,有些过程是能够工具化来进步工作效率,腾出更多的工夫和精力去进步本人(摸鱼~)

工具化

在日常数据开发过程中,会常常须要依据数据模型编写建表语句,每次写建表语句都会用几分钟的工夫,而且还容易出一些低级的谬误,于是打算做个 Excel 模板,把表字段、表分区、表名写在外面,通过程序主动生成建表语句。成果如下图:

制作模板

次要包含表名、表中文形容、字段名、数据类型、字段阐明、是不能够为空、惟一主键、表分区等写在外面(能够依据理论状况进行调整)

模板组成分为三个局部:

  • 1- 3 行是表名、表中文形容和模板列阐明
  • 4-19 行为创立表字段的根本信息
  • 20 行为分区字段

实现原理

获取指定目录下的数据模型文件,约定为以「数据模型.xls」或「数据模型.xlsx」文件名结尾的 Excel 文件

循环遍历每个模板文件,依据模板组成标准,解析文件,拼接 SQL 语句,生成建表语句文件

生成后果

CREATE EXTERNAL TABLE ods_cbonddescription (
    object_id string  COMMENT '对象 ID',
    b_info_fullname string  COMMENT '债券名称',
    s_info_name string  COMMENT '债券简称',
    b_info_issuer string  COMMENT '发行人',
    b_issue_announcement string  COMMENT '发行公告日',
    b_issue_firstissue string  COMMENT '发行起始日',
    b_issue_lastissue string  COMMENT '发行截至日',
    b_issue_amountplan bigint  COMMENT '打算发行总量(亿元)',
    b_issue_amountact bigint  COMMENT '理论发行总量(亿元)',
    b_info_issueprice bigint  COMMENT '发行价格',
    b_info_par bigint  COMMENT '面值',
    b_info_term_year int  COMMENT '债券期限(年)',
    b_info_term_day int  COMMENT '债券期限(天)',
    b_info_paymentdate int  COMMENT '兑付日',
    b_info_paymenttype int  COMMENT '计息形式',
    s_info_exchmarket string  COMMENT '交易所'
)
COMMENT '债券根本信息' 
PARTITIONED BY(dt string) 
ROW FORMAT DELIMITED '\t' 
STORED AS ORC 
LOCATION 'hdfs://host:8020/dw/ods/ods_cbonddescription';

结语

如果大家在工作中应用了什么样的模板,能够一起交换如何造成肯定的工具化的脚本来进步咱们工作的效率。

最初,关注公众号,回复「601」获取模板和代码。

退出移动版