将Hive数据库存储格式转换为orc

2024-05-25 20:38

本文主要是介绍将Hive数据库存储格式转换为orc,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Hive的存储格式

  • textfile

    hive的默认存储格式
    存储方式:行存储
    磁盘开销大 数据解析开销大
    压缩的text文件 hive无法进行合并和拆分

  • SequenceFile

    二进制文件以key,value的形式序列化到文件中
    存储方式:行存储
    可分割 压缩
    一般选择block压缩
    优势是文件和hadoop api中的mapfile是相互兼容的

  • rcfile

    存储方式:数据按行分块 每块按照列存储
    压缩快 快速列存取
    读记录尽量涉及到的block最少
    读取需要的列只需要读取每个row group 的头部定义。
    读取全量数据的操作 性能可能比sequencefile没有明显的优势

  • orc

    存储方式:数据按行分块 每块按照列存储
    压缩快 快速列存取
    效率比rcfile高,是rcfile的改良版本

  • 自定义格式

    用户可以通过实现inputformat和 outputformat来自定义输入输出格式

Hive导入数据的几种方式

  • 从本地文件系统中导入
load data local inpath 'customer .data' into table customer;
  • 从HDFS上导入
load data inpath '/hive/customer .data' into table customer;
  • 从别的表中查询出相应的数据导入
insert into table customer select * from customer_tmp;

将存储格式转换为orc

因为textfile类型的数据不能直接保存到orc类型的表中,根据上面的几种导入数据的方式我们做一下转换就可以了,先导入到一个textfile类型的表中然后在通过查询导入到另外一个表就可以了

示例:

use tpcds_orc;
drop table if exists customer_tmp;
create table customer_tmp
(c_customer_sk             int                           ,c_customer_id             char(16)                      ,c_current_cdemo_sk        int                           ,c_current_hdemo_sk        int                           ,c_current_addr_sk         int                           ,c_first_shipto_date_sk    int                           ,c_first_sales_date_sk     int                           ,c_salutation              char(10)                      ,c_first_name              char(20)                      ,c_last_name               char(30)                      ,c_preferred_cust_flag     char(1)                       ,c_birth_day               int                           ,c_birth_month             int                           ,c_birth_year              int                           ,c_birth_country           varchar(20)                   ,c_login                   char(13)                      ,c_email_address           char(50)                      ,c_last_review_date        char(10)
)
row format delimited fields terminated by '|';
load data local inpath '/data1/tpcds/data100/customer.dat' into table customer_tmp;
drop table if exists customer;
create table customer
(c_customer_sk             int                           ,c_customer_id             char(16)                      ,c_current_cdemo_sk        int                           ,c_current_hdemo_sk        int                           ,c_current_addr_sk         int                           ,c_first_shipto_date_sk    int                           ,c_first_sales_date_sk     int                           ,c_salutation              char(10)                      ,c_first_name              char(20)                      ,c_last_name               char(30)                      ,c_preferred_cust_flag     char(1)                       ,c_birth_day               int                           ,c_birth_month             int                           ,c_birth_year              int                           ,c_birth_country           varchar(20)                   ,c_login                   char(13)                      ,c_email_address           char(50)                      ,c_last_review_date        char(10)
)
row format delimited fields terminated by '|'
stored as orc ;
insert into table customer select * from customer_tmp;
drop table customer_tmp;

这篇关于将Hive数据库存储格式转换为orc的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1002572

相关文章

使用 sql-research-assistant进行 SQL 数据库研究的实战指南(代码实现演示)

《使用sql-research-assistant进行SQL数据库研究的实战指南(代码实现演示)》本文介绍了sql-research-assistant工具,该工具基于LangChain框架,集... 目录技术背景介绍核心原理解析代码实现演示安装和配置项目集成LangSmith 配置(可选)启动服务应用场景

Java数字转换工具类NumberUtil的使用

《Java数字转换工具类NumberUtil的使用》NumberUtil是一个功能强大的Java工具类,用于处理数字的各种操作,包括数值运算、格式化、随机数生成和数值判断,下面就来介绍一下Number... 目录一、NumberUtil类概述二、主要功能介绍1. 数值运算2. 格式化3. 数值判断4. 随机

使用Navicat工具比对两个数据库所有表结构的差异案例详解

《使用Navicat工具比对两个数据库所有表结构的差异案例详解》:本文主要介绍如何使用Navicat工具对比两个数据库test_old和test_new,并生成相应的DDLSQL语句,以便将te... 目录概要案例一、如图两个数据库test_old和test_new进行比较:二、开始比较总结概要公司存在多

MySQL数据库函数之JSON_EXTRACT示例代码

《MySQL数据库函数之JSON_EXTRACT示例代码》:本文主要介绍MySQL数据库函数之JSON_EXTRACT的相关资料,JSON_EXTRACT()函数用于从JSON文档中提取值,支持对... 目录前言基本语法路径表达式示例示例 1: 提取简单值示例 2: 提取嵌套值示例 3: 提取数组中的值注意

使用C++将处理后的信号保存为PNG和TIFF格式

《使用C++将处理后的信号保存为PNG和TIFF格式》在信号处理领域,我们常常需要将处理结果以图像的形式保存下来,方便后续分析和展示,C++提供了多种库来处理图像数据,本文将介绍如何使用stb_ima... 目录1. PNG格式保存使用stb_imagephp_write库1.1 安装和包含库1.2 代码解

java如何通过Kerberos认证方式连接hive

《java如何通过Kerberos认证方式连接hive》该文主要介绍了如何在数据源管理功能中适配不同数据源(如MySQL、PostgreSQL和Hive),特别是如何在SpringBoot3框架下通过... 目录Java实现Kerberos认证主要方法依赖示例续期连接hive遇到的问题分析解决方式扩展思考总

C语言中自动与强制转换全解析

《C语言中自动与强制转换全解析》在编写C程序时,类型转换是确保数据正确性和一致性的关键环节,无论是隐式转换还是显式转换,都各有特点和应用场景,本文将详细探讨C语言中的类型转换机制,帮助您更好地理解并在... 目录类型转换的重要性自动类型转换(隐式转换)强制类型转换(显式转换)常见错误与注意事项总结与建议类型

查询SQL Server数据库服务器IP地址的多种有效方法

《查询SQLServer数据库服务器IP地址的多种有效方法》作为数据库管理员或开发人员,了解如何查询SQLServer数据库服务器的IP地址是一项重要技能,本文将介绍几种简单而有效的方法,帮助你轻松... 目录使用T-SQL查询方法1:使用系统函数方法2:使用系统视图使用SQL Server Configu

Redis存储的列表分页和检索的实现方法

《Redis存储的列表分页和检索的实现方法》在Redis中,列表(List)是一种有序的数据结构,通常用于存储一系列元素,由于列表是有序的,可以通过索引来访问元素,因此可以很方便地实现分页和检索功能,... 目录一、Redis 列表的基本操作二、分页实现三、检索实现3.1 方法 1:客户端过滤3.2 方法

Python实现视频转换为音频的方法详解

《Python实现视频转换为音频的方法详解》这篇文章主要为大家详细Python如何将视频转换为音频并将音频文件保存到特定文件夹下,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. python需求的任务2. Python代码的实现3. 代码修改的位置4. 运行结果5. 注意事项