MySQL数据同步到HIVE,自动生成MySQL表对应HIVE的建表语句

【Kettle】将数据从mysql写入到hive中 前言 我们设想有一个场景,需要从把数据从mysql写入到hive中,这样大家就可以用到这篇文章的内容,话不多说直接看下面的操作。 业务流程图 创建一个作业把流程配置好 创建mysql表及其数据 创建一个转换进行数据处理及写入 根据业务需求来写需要的业务 获取mysql的表的数据 字段选择 按照需求设置,这里我们的需求... 阅读详情

背景

  • MySQL数据同步到HIVE时,要写HIVE的建表语句
    数据类型全写STRING不够好,对此写个自动转换程序
    转换后不一定是最终的,仍可能要微调
  • 开发语言:Python3

MySQL列数据类型转成HIVE的

from re import fullmatch

def column_type_mysql2hive(mysql_column_type):
    """MySQL列数据类型转成HIVE的"""
    # tinyint
    if fullmatch('^tinyint.+unsigned', mysql_column_type):
        return 'SMALLINT'
    elif fullmatch('^tinyint.*', mysql_column_type):
        return 'TINYINT'
    # smallint
    elif fullmatch('^smallint.+unsigned', mysql_column_type):
        return 'INT'
    elif fullmatch('^smallint.*', mysql_column_type):
        return 'SMALLINT'
    # mediumint
    elif fullmatch('^mediumint.*', mysql_column_type):
        return 'INT'
    # int
    elif fullmatch('^int.+unsigned', mysql_column_type):
        return 'BIGINT'
    elif fullmatch('^int.*', mysql_column_type):
        return 'INT'
    # bigint
    elif fullmatch('^bigint.+unsigned', mysql_column_type):
        # return 'STRING'
        return 'BIGINT'  # 无符号BIGINT可能会越界
    elif fullmatch('^bigint.*', mysql_column_type):
        return 'BIGINT'
    # double、float、decimal
    elif fullmatch('^double.*', mysql_column_type):
        return 'DOUBLE'
    elif fullmatch('^float.*', mysql_column_type):
        return 'FLOAT'
    elif fullmatch(r'^decimal.*', mysql_column_type):
        return mysql_column_type.replace(' unsigned', '').upper()
    # 其它
    else:
        return 'STRING'
MySQLHIVE
tinyintTINYINT
tinyint unsignedSMALLINT
smallintSMALLINT
smallint unsignedINT
mediumint 和 mediumint unsignedINT
intINT
int unsignedBIGINT
bigintBIGINT
bigint unsignedBIGINT 或 STRING
decimalDECIMAL
floatFLOAT
doubleDOUBLE
  • 按上述映射关系转,不在上述表格的数据类型统一转STRING
  • 注意:
    1、无符号BIGINT转HIVE的BIGINT可能会越界;如果越界,就考虑转STRING或DECIMAL
    2、建议bit类型数据,用bin函数转成字符串,再导入到HDFS

自动生成MySQL表对应HIVE建表语句完整代码

from re import fullmatch
from pymysql import Connection  # conda install -y pymysql

# 查询MySQL表的列名、列类型和列注释
SQL_COLUMNS = '''
SELECT
  `COLUMN_NAME`     -- 列名
  ,`COLUMN_TYPE`    -- 类型
  ,`COLUMN_COMMENT` -- 列注释
FROM `information_schema`.`COLUMNS`
WHERE `TABLE_SCHEMA`='{TABLE_SCHEMA}'
  AND `TABLE_NAME`='{TABLE_NAME}'
ORDER BY `ORDINAL_POSITION`;
'''.strip().format

# 查询MySQL表的注释
SQL_COMMENT = '''
SELECT `TABLE_COMMENT`
FROM `information_schema`.`TABLES`
WHERE `TABLE_SCHEMA`='{TABLE_SCHEMA}'
  AND `TABLE_NAME`='{TABLE_NAME}';
'''.strip().format

# HIVE表前缀
HIVE_PREFIX = 'ods_'

# HIVE建表语句
HIVE_DDL = '''
CREATE EXTERNAL TABLE `{table}`(
{columns}
) COMMENT '{table_comment}'
PARTITIONED BY (`ymd` STRING COMMENT '年月日');
'''.strip().format

# MySQL原表的建表语句,用于参照
MYSQL_DDL = "SHOW CREATE TABLE `{TABLE_SCHEMA}`.`{TABLE_NAME}`".format


def column_type_mysql2hive(mysql_column_type):
    """MySQL列数据类型转成HIVE的"""
    # tinyint
    if fullmatch('^tinyint.+unsigned', mysql_column_type):
        return 'SMALLINT'
    elif fullmatch('^tinyint.*', mysql_column_type):
        return 'TINYINT'
    # smallint
    elif fullmatch('^smallint.+unsigned', mysql_column_type):
        return 'INT'
    elif fullmatch('^smallint.*', mysql_column_type):
        return 'SMALLINT'
    # mediumint
    elif fullmatch('^mediumint.*', mysql_column_type):
        return 'INT'
    # int
    elif fullmatch('^int.+unsigned', mysql_column_type):
        return 'BIGINT'
    elif fullmatch('^int.*', mysql_column_type):
        return 'INT'
    # bigint
    elif fullmatch('^bigint.+unsigned', mysql_column_type):
        # return 'STRING'
        return 'BIGINT'  # 无符号BIGINT可能会越界
    elif fullmatch('^bigint.*', mysql_column_type):
        return 'BIGINT'
    # double、float、decimal
    elif fullmatch('^double.*', mysql_column_type):
        return 'DOUBLE'
    elif fullmatch('^float.*', mysql_column_type):
        return 'FLOAT'
    elif fullmatch(r'^decimal.*', mysql_column_type):
        return mysql_column_type.replace(' unsigned', '').upper()
    # 其它
    else:
        return 'STRING'


class Mysql:
    def __init__(self, **kwargs):
        self.db = Connection(
            user=kwargs.pop('user', 'root'),
            password=kwargs.pop('password'),
            host=kwargs.pop('host', 'localhost'),
            database=kwargs.pop('database'),
            port=kwargs.pop('port', 3306),
            charset=kwargs.pop('charset', 'UTF8'),
        )
        self.cursor = self.db.cursor()

    def __del__(self):
        self.cursor.close()
        self.db.close()

    def commit(self, sql):
        try:
            self.cursor.execute(sql)
            self.db.commit()
        except Exception as e:
            print(e)

    def fetchall(self, query):
        self.cursor.execute(query)
        return self.cursor.fetchall()  # 有数据:tuple of tuple;无数据:()

    def get_columns(self, db, tb):
        columns = []
        for c_name, c_type, c_comment in self.fetchall(SQL_COLUMNS(TABLE_SCHEMA=db, TABLE_NAME=tb)):
            hive_type = column_type_mysql2hive(c_type)
            columns.append(f"  `{c_name}` {hive_type} COMMENT '{c_comment}',")
        return '\n'.join(columns).rstrip(',')

    def get_table_comment(self, db, tb):
        return self.fetchall(SQL_COMMENT(TABLE_SCHEMA=db, TABLE_NAME=tb))[0][0]

    def get_hive_ddl(self, db, tb, prefix='ods_mysql_', postfix='_full'):
        columns = self.get_columns(db, tb)
        comment = self.get_table_comment(db, tb)
        table = prefix + tb + postfix
        return HIVE_DDL(table=table, columns=columns, table_comment=comment)

    def get_mysql_ddl(self, db, tb):
        return self.fetchall(MYSQL_DDL(TABLE_SCHEMA=db, TABLE_NAME=tb))[0][1]


if __name__ == '__main__':
    TABLE_SCHEMA = 'z'
    TABLE_NAME = 'yyy_inf'
    m = Mysql(password='123456', database='information_schema')
    print('源MySQL建表语句'.center(99, '-'))
    print(m.get_mysql_ddl(TABLE_SCHEMA, TABLE_NAME))
    print('HIVE建表语句'.center(99, '-'))
    print(m.get_hive_ddl(TABLE_SCHEMA, TABLE_NAME))

附录

数据类型

HIVE数值大小说明范围
TINYINT1-bytesigned integer-128~127
SMALLINT2-bytesigned integer-32,768~32,767
INT/INTEGER4-bytesigned integer-2,147,483,648~2,147,483,647
BIGINT8-bytesigned integer-9,223,372,036,854,775,808~
9,223,372,036,854,775,807
FLOAT4-byte单精度浮点数
DOUBLE8-byte双精度浮点数
DECIMALDECIMAL(precision, scale)
默认decimal(10,0)
NUMERIC等同DECIMAL
始于Hive 3.0.0
HIVE时间译名示例
TIMESTAMP时间戳SELECT CURRENT_TIMESTAMP()=>2022-04-22 00:15:29.363
DATE日期SELECT CURRENT_DATE()=>2022-04-22
INTERVAL时间间隔SELECT INTERVAL '1' DAY=>1 00:00:00.000000000
HIVE字符串译名范围备注
String字符串无长度限制不能太长,太长会影响性能
Varcharvariable character,可变字符1~65535超出长度部分会被截断
Char定长字符1~255不足长度部分将会用空格填充
MySQL数值大小范围(有符号)范围(无符号)用途
TINYINT1 Bytes(-128,127)(0,255)小整数值
SMALLINT2 Bytes(-32 768,32 767)(0,65 535)大整数值
MEDIUMINT3 Bytes(-8 388 608,8 388 607)(0,16 777 215)大整数值
INT或
INTEGER
4 Bytes(-2 147 483 648,2 147 483 647)(0,4 294 967 295)大整数值
BIGINT8 Bytes(-9,223,372,036,854,775,808,9 223 372 036 854 775 807)(0,18 446 744 073 709 551 615)极大整数值
FLOAT4 Bytes(-3.402 823 466 E+38,-1.175 494 351 E-38),
0,
(1.175 494 351 E-38,3.402 823 466 351 E+38)
0,(1.175 494 351 E-38,3.402 823 466 E+38)单精度
浮点数值
DOUBLE8 Bytes(-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),
0,
(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)
0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)双精度
浮点数值
DECIMALDECIMAL(M,D)
若M>D,则M+2,否则D+2
依赖于M和D的值依赖于M和D的值小数值
MySQL字符串大小用途
CHAR0-255 bytes定长字符串
VARCHAR0-65535 bytes变长字符串
TINYBLOB0-255 bytes不超过 255 个字符的二进制字符串
TINYTEXT0-255 bytes短文本字符串
BLOB0-65 535 bytes二进制形式的长文本数据
TEXT0-65 535 bytes长文本数据
MEDIUMBLOB0-16 777 215 bytes二进制形式的中等长度文本数据
MEDIUMTEXT0-16 777 215 bytes中等长度文本数据
LONGBLOB0-4 294 967 295 bytes二进制形式的极大文本数据
LONGTEXT0-4 294 967 295 bytes极大文本数据
MySQL时间大小范围
date3 bytes1000-01-01/9999-12-31
datetime8 bytes1000-01-01 00:00:00 ~ 9999-12-31 23:59:59
timestamp4 bytes1970-01-01 00:00:00 ~ 2038-01-19 03:14:07

某次执行结果打印

---------------------------------------------源MySQL建表语句--------------------------------------------
CREATE TABLE `yyy_inf` (
  `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
  `v01` tinyint NOT NULL DEFAULT '-12' COMMENT '值2',
  `v02` tinyint unsigned NOT NULL DEFAULT '12' COMMENT '值2',
  `v011` smallint NOT NULL DEFAULT '-12' COMMENT '值2',
  `v012` smallint unsigned NOT NULL DEFAULT '12' COMMENT '值2',
  `v0123` mediumint unsigned NOT NULL DEFAULT '12' COMMENT '值2',
  `v1` int unsigned NOT NULL DEFAULT '1234' COMMENT '值1',
  `v2` int NOT NULL DEFAULT '-12' COMMENT '值2',
  `v3` bigint NOT NULL DEFAULT '-1234' COMMENT '值3',
  `v4` decimal(9,2) NOT NULL DEFAULT '-12.34' COMMENT '值4',
  `v41` decimal(10,0) NOT NULL COMMENT '值4',
  `v5` decimal(9,2) unsigned NOT NULL DEFAULT '12.34' COMMENT '值5',
  `v6` float NOT NULL DEFAULT '-12.34' COMMENT '值6',
  `v7` float unsigned NOT NULL DEFAULT '12.34' COMMENT '值7',
  `v8` double unsigned NOT NULL DEFAULT '12.34' COMMENT '值8',
  `v9` double NOT NULL DEFAULT '-12.34' COMMENT '值9',
  `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
  `delete_flag` tinyint unsigned NOT NULL DEFAULT '0' COMMENT '逻辑删除标识:1=删除,0=未删',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='y信息'
----------------------------------------------HIVE建表语句---------------------------------------------
CREATE EXTERNAL TABLE `ods_mysql_yyy_inf_full`(
  `id` BIGINT COMMENT '主键',
  `v01` TINYINT COMMENT '值2',
  `v02` SMALLINT COMMENT '值2',
  `v011` SMALLINT COMMENT '值2',
  `v012` INT COMMENT '值2',
  `v0123` INT COMMENT '值2',
  `v1` BIGINT COMMENT '值1',
  `v2` INT COMMENT '值2',
  `v3` BIGINT COMMENT '值3',
  `v4` DECIMAL(9,2) COMMENT '值4',
  `v41` DECIMAL(10,0) COMMENT '值4',
  `v5` DECIMAL(9,2) COMMENT '值5',
  `v6` FLOAT COMMENT '值6',
  `v7` FLOAT COMMENT '值7',
  `v8` DOUBLE COMMENT '值8',
  `v9` DOUBLE COMMENT '值9',
  `create_time` STRING COMMENT '创建时间',
  `update_time` STRING COMMENT '修改时间',
  `delete_flag` SMALLINT COMMENT '逻辑删除标识:1=删除,0=未删'
) COMMENT 'y信息'
PARTITIONED BY (`ymd` STRING);

补充:ADS层数据导出到MySQL,自动生成HIVE表对应MySQL的建表语句

"""
通过ADS层建表语句,生成MySQL建表语句
ADS层不分区,不使用压缩,行存储
"""
from sql import read_file
text = read_file('hive/ads.sql')
# 去掉EXTERNAL
text = text.replace('EXTERNAL', '')
# STRING替换为varchar
text = text.replace('STRING', 'text')
# 去掉ads_前缀
text = text.replace('ads_', '')
print(text)
-- 源HIVE建表语句
CREATE EXTERNAL TABLE ads_purchase_order_info (
`prch_order_id` STRING COMMENT '采购订单头id',
`prch_item_id` STRING COMMENT '采购订单行id',
`exfactory_total_price` DOUBLE COMMENT '出厂价总额',
`insert_time` STRING COMMENT '数据插入日期'
) COMMENT '采购信息';

-- 生成的MySQL建表语句
CREATE  TABLE purchase_order_info (
`prch_order_id` text COMMENT '采购订单头id',
`prch_item_id` text COMMENT '采购订单行id',
`exfactory_total_price` DOUBLE COMMENT '出厂价总额',
`insert_time` text COMMENT '数据插入日期'
) COMMENT '采购信息';
通过KETTLE 生成MYSQL 到HIVE的建表语句 在数仓这块实在有太多想写的了,又感觉写得不专业不系统,始终没有动起手来,就零散写一些简单的小技巧和工具吧! 通过KETTLE 生成MYSQL 到HIVE的建表语句:市场上这样的工具太少了,为了提升效率,简单写了一个作业来实现这个能力。 逻辑大致分为三步, 1.提供需要采集的业务库(mysql)的元数据读取权限,用于读取表 字段信息 2.通过构建SQL逻辑实现建表语句 3.建表语句追加方式输出 到文件 先看下实现的效果吧: 读取的资源库的表结构,然后生成建表语句,其中简单处理了一些字段... 阅读详情

相关推荐

在Oracle、MySQL中执行sql脚本生成hive建表语句

生成hive建表语句的首尾只需拼接,主要通过数据库元数据读取字段类型转换为hive中的类型。 在MySQL中生成hive建表语句: SELECT CONCAT('create table ',@tbl_name,'(') UNION ALL SELECT CONCAT( COLUMN_NAME, ' ', CASE ...

fanlying的博客 4028

mysql建表语句转hive sql

mysql建表语句转hive sql案例教学。

weixin_44894162的博客 2011

数仓建模:DataX同步Mysql数据到Hive如何批量生成建表语句?| 基于SQL实现

表数量不多的话还好,如果多库多表需要批量采集的话工作量会很大,因此需要一个批量生成建表语句的功能来节省人力。5)业务指标体系该如何建设?本文基于SQL给出了一种 DataX同步Mysql数据到Hive批量生成建表语句的方法及技巧,该方法和技巧在数仓开发中经常被用到。专栏 原价99,现在活动价39.9,按照阶梯式增长,还差3个名额将上升至59.9,直到恢复原价。7)指标发生异常,该如何排查?11)数据部门如何与业务部门沟通,并规划指引业务需求?9)数仓团队应如何体现自己的业务价值,讲好数据故事?

石榴姐yyds 2200

Mysql 表结构 到 hive 表结构的转换 (DDL自动生成)

最近在做mysql 入hive数仓的工作,由于业务表数量较大,单独写hive DDL太过耗时,就找到了如下方法。 准备一张维度表:dim_ddl_convert,建表语句如下: CREATE TABLE dim_ddl_convert ( source VARCHAR(100) NOT NULL, data_type1 VARCHAR(100) NOT NULL, target VARCHAR(100) NOT NULL, da

雾岛与鲸的博客 3578

Android音频子系统分析-car_audio_configuration.xml

先附上一个例子,再逐一解释。概括来说,该文件描述了车里有哪些区域,每个区域划分了多少组,每个组包含了哪些设备,每个设备接收哪些类型的音频流。

不定时记录分享一些有用没用的东西 989

登临科技Goldwasser加速卡Python SDK实战:从环境配置到YOLOv5模型性能压测

本文详细介绍了登临科技Goldwasser加速卡的Python SDK实战指南,从环境配置到YOLOv5模型性能压测的全过程。通过驱动安装、SDK环境搭建、模型转换与推理优化等步骤,帮助开发者高效利用AI加速卡提升深度学习模型性能。重点分享了批量推理压测技巧和常见问题解决方案,助力开发者充分发挥Goldwasser加速卡的算力优势。

weixin_29035147的博客 302

SQL之mysql到hive批量生成建表语句

SQL之mysql到hive批量生成建表语句

chimchim66的博客 1195

大漠多线程增强版:解决窗口消失、坐标错乱与识别卡死

多线程环境下窗口自动化面临的核心挑战,本质是GDI资源非线程安全、HWND生命周期失控及图像引擎状态污染三大底层问题。Windows GUI编程中,跨线程共享hDC、缓存失效的窗口句柄、OpenCV静态Mat等设计缺陷,导致FindPic失败、GetCursorPos异常、坐标跳变等典型故障。本方案通过线程局部存储(TLS)重构资源生命周期、WinEventHook+心跳探测构建实时窗口状态链、ABI对齐的多语言内存契约,实现稳定低延迟的并发UI识别与控制。适用于游戏多开监控、电商RPA、后台UI状态采集等

weixin_30561177的博客 478

mysql2hive建表语句的转换

准备一张维度表:dim_ddl_convert,建表语句如下: DROP TABLE IF EXISTS `dim_ddl_convert`; CREATE TABLE `dim_ddl_convert` ( `source` varchar(100) NOT NULL, `data_type1` varchar(100) NOT NULL, `target` varchar(100) NOT NULL, `data_type2` varchar(100) DEFAULT NULL, `

DevinKim的博客 1570

IC面试常考题 Verilog三分频电路设计(占空比50%,三分之一,三分之二)

实现三分频电路最简单的是: 利用计数器实现。 时序图分析(本人比较懒,平常科研忙,所以直接手画时序图了,懒得用软件画了): 直接上图分析:利用计数器每隔三个周期信号翻转一次,同时在不同的计数下翻转得到的同步信号 clk_1和clk_2,再利用异或即可实现出一个不同占空比的三分频信号(同样的方法也可扩展到其他奇数分频设计中)。 例如占空比50%: module Div_three( input clk, input rst_n, output div_three ); reg

qq_41884662的博客 1万+

Obsidian笔记同步实战:基于Git的私有化部署与自动化管理

本文详细介绍了如何利用Git为Obsidian笔记构建私有化、自动化且免费的同步方案。通过安装配置Git与Obsidian-git插件,结合Gitee等远程仓库,实现笔记的版本管理、多设备同步与自动备份,打造安全可靠的知识管理体系。

y7z8a的博客 273

hive 通过mysql 生成建表语句

hive 通过mysql 生成建表语句。

qq_27896233的博客 371

深度学习驱动的虚拟试衣间:从CP-VTON到HR-VITON的完整实现指南

虚拟试衣(Virtual Try-On,VTON)是一项利用计算机视觉和深度学习技术,将目标服装自然地“穿”到人物图像上的智能技术。这项技术正在彻底改变在线购物体验,让消费者无需实际试穿就能预览服装的上身效果。VITON-HD是目前最常用的高分辨率虚拟试衣数据集。图像分辨率:1024×768训练集:11,647对(人物+服装)测试集:2,032对每对包含:人物全身照(front)服装平铺图(cloth)人体解析图(segmentation)姿态关键点(pose)

YOLO 394

根据MySQL表结构批量自动生成HIVE建表语句

根据MySQL表结构批量自动生成HIVE建表语句

June_de_love的博客 1974

LDRA Testbed软件静态分析_操作指南

从本文起,将开始LDRA Testbed(TBrun)教程的系列文章,包括软件静态分析、单元测试、集成测试,以及基于Testbed的自动化工具开发、持续集成、常见问题解答等。LDRA公司是专业的软件测试工具与测试技术、咨询服务提供者,其总部位于英国利物浦。其旗舰产品Testbed/TBrun功能全面、易于使用,不仅适合于主机平台软件测试,同时适合于嵌入式软件测试。不仅能进行软件静态测试,还能进行软件单元测试、软件集成测试,在白盒测试领域运用比较广泛。

文章主要涉及嵌入式软件开发、测试、项目管理等,欢迎交流,共同进步。 1万+

Kimodo 入门教程(一)英伟达开源人形机器人动捕数据集训练运动学动作扩散模型

Kimodo是一个基于700小时商用光学动作捕捉数据集训练的运动学动作扩散模型,能够生成高质量的人体和机器人3D动作。该模型支持通过文本提示和多种约束条件(如关键帧、末端执行器位置等)进行控制,并提供数字人类和类人机器人两种模型变体。安装方式包括软件包安装和源代码安装两种,需要配置HuggingFace令牌以访问文本编码器。推荐使用GPU加速,最低需要17GB显存。项目提供命令行生成和交互式演示两种使用方式,演示程序支持时间轴编辑和实时3D可视化。模型分为商用友好版和受限版,其中SMPL-X版本需要额外申请

2506_90492529的博客 1935

SQL实现MYSQL到HIVE建表语句的转换(异构数据源DDL转换)

准备一张维度表:dim_ddl_convert,建表语句如下: CREATE TABLE dim_ddl_convert ( source VARCHAR(100) NOT NULL, data_type1 VARCHAR(100) NOT NULL, target VARCHAR(100) NOT NULL, d...

colby_chenlun的博客 6612

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

获取impala下所有的数据库建表语句

本博文介绍三种方法,推荐使用第三种,前两种都是尝试。 方法一: 现在的导出还是有缺陷的,导出的文件中还是存在其他不必要的信息 #!/bin/bash ##获取数据库 databases=$(hive -e "show databases; exit;") for database in $databases; do #获取hive建表语句 tables=$(hive -e "use $database; show tables;") for...

u011250186的博客 3591

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

mysql建表语句转hive_如何获取hive建表语句

在使用hive进行开发时,我们往往需要获得一个已存在hive表的建表语句(DDL),然而hive本身并没有提供这样一个工具。要想还原建表DDL就必须从元数据入手,我们知道,hive的元数据并不存放在hdfs上,而是存放在传统的RDBMS中,典型的如mysql,derby等,这里我们以mysql为元数据库,结合0.4.2版本的hive为例进行研究。连接上mysql后可以看到hive元数据对应的表约有...

weixin_39673742的博客 1387

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

根据Excel记录生成Mysql和Hive建表语句

根据Excel记录生成Mysql和Hive建表语句

承缘丶 1936

使用python 获取mysql数据 并生成hive建表语句

使用python 获取mysql数据 并生成hive建表语句 # -*- coding: utf-8 -*- import sys reload(sys) sys.setdefaultencoding('utf-8') import re from collections import defaultdict import MySQLdb import pandas as pd engine=...

qq_22994783的博客 1785

根据mysql元数据还原hive建表语句

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33777877的博客 583

如何获取hive建表语句

在使用hive进行开发时,我们往往需要获得一个已存在hive表的建表语句(DDL),然而hive本身并没有提供这样一个工具。 要想还原建表DDL就必须从元数据入手,我们知道,hive的元数据并不存放在hdfs上,而是存放在传统的RDBMS中,典型的如mysql,derby等,这里我们以mysql为元数据库,结合0.4.2版本的hive为例进行研究。 连接上mysql后可以看到hive元数据对应...

baiyunl的专栏 966

linux下db2建表语句,DB2建表语句

db2 => create table test (name char(8) not null primary key,depid smallint,pay bigint)DB20000I SQL 命令成功完成。db2 => create table test1 (name char(8) not null primary key,depid smallint references d...

weixin_28761983的博客 1971

从Hive建表语句到MySQL的转换

从Hive建表语句到MySQL的转换起因在数据处理和数据仓库建设中,常常会用到Hive进行数据存储和查询。然而,有时候我们需要将Hive中的表结构迁移到其他关系型数据库,比如MySQL。本文将介绍如何将Hive中的建表语句转换为MySQL中的建表语句,方便数据迁移和数据同步。Hive建表语句示例假设我们有一个在Hive中创...

weixin_42205405的博客 289

hive建表详注小记(备忘)

注:hive其他语法在hive官网有说明,建议初学者,去官网学习一手的资料, 官网 默认情况下,Hive会创建内部表,其中文件,元数据和统计信息由内部Hive进程管理。 说到建表首先我们需要了解内部表和外部表,这个点比较重要。 hive内部表和外部表 1、语法 从语法上看,内部表和外部表的区别就是建表时外部表使用EXTERNAL修饰,而内部表没有。 2、区别: 我们下面从数据管理、数据存储、表删除、元数据更新这四个方面阐述两种模式建表的区别: 1、数据管理:内部表数据由Hive自身管理,外部表数据由H.

qq_41018861的博客 3941
上一篇: 统计HIVE字段行数、NULL行数、字段重复行数
下一篇: YARN公平调度器-原理和入门配置
小基基o_O
博客等级 码龄9年 4414粉丝 467原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小基基o_O

您的鼓励是我创作的巨大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值