date类型_06076.1.0如何将ORC格式且使用了DATE类型的Hive表转为Parquet表
温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。
Fayson的github:
https://github.com/fayson/cdhproject
提示:代码块部分可以左右滑动查看噢
1
文档编写目的
在CDH中使用Hive时,为了统一数据文件的存储格式,推荐使用Parquet格式的文件存储,这样做也是为了能够同时能够兼容Impala的查询。有些用户在Hive中创建大量的ORC格式的表,并使用了DATE数据类型,这会导致在Impala中无法进行正常的查询,因为Impala不支持DATE类型和ORC格式的文件。本篇文章Fayson主要介绍如何通过脚本将ORC格式且使用了DATE类型的Hive表转为Parquet表。
你可能还需要了解的知识:
《答应我,别在CDH5中使用ORC好吗》
《如何在Hive中生成Parquet表》
内容概述
1.准备测试数据及表
2.Hive ORC表转Parquet
3.总结
测试环境
1.RedHat7.4
2.CM和CDH版本为6.1.0
2
Hive ORC表转Parquet表
1.使用如下语句在hive中创建一个包含DATE类型的ORC表,并插入测试数据
create table test_orc(id int, name string,birthday date) stored as orc;INSERT into test values(1, 'fayson','2019-10-11');
使用Impala查询test_orc表,会提示“Unsupported type 'DATE' in 'default.test_orc.birthday'”
2.登录Hive的元数据库,在数据库中将所有Hive表中Column为DATE类型的数据修改为STRING
MariaDB [metastore]> select * from COLUMNS_V2 where TYPE_NAME='date';MariaDB [metastore]> update COLUMNS_V2 set TYPE_NAME='string' where TYPE_NAME='date';
查看test_orc表的DATE类型字段是已修改为STRING
使用Hive可以正常查询test_orc表数据
使用Impala查询提示“ORC scans are disabled by --enable_orc_scanner flag”
3.准备Hive SQL脚本将test_orc表转为Parquet格式的表
set mapreduce.input.fileinputformat.split.maxsize=536870912;set mapreduce.input.fileinputformat.split.minsize=536870912;set parquet.block.size=268435456;set parquet.compression=SNAPPY;drop table if exists test_orc_2_parquet;create table default. test_orc_2_parquet stored as parquetas select * from test_orc;
4.在命令行使用hive命令执行test_parquet.sql脚本
[root@hadoop12 ~]# hive -f test_parquet.sql
5.查看test_orc_2_parquet表正常,格式转为parquet且访问正常
使用Impala访问test_orc_2_parquet表
3
总结
1.Hive对ORC格式的表没有做严格的数类型校验,因此在统一的修改了Hive元数据库的DATE类型为STRING类型后,ORC格式的表依然可以正常查询。
2.在C6版本中其实已经支持了ORC格式的表,但默认是禁用的,可以通过在Impala Daemon的高级配置中增加--enable_orc_scanner参数来启用,由于C6版本目前刚支持ORC格式,是否存在问题和风险有待验证。
3.Impala默认是不支持DATE类的,同时Impala对Parquet或ORC文件中的数据类型有严格的校验,因此在将Hive元数据库中DATE类型修改为STRING类型后查询依然会报“Unsupported type 'DATE'”。
4.Hive元数据库中的COLUMNS_V2表中主要存储Hive表中的列信息,这里介绍的转换方式比较暴力,但是爽啊!!!
提示:代码块部分可以左右滑动查看噢
为天地立心,为生民立命,为往圣继绝学,为万世开太平。
温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。
推荐关注Hadoop实操,第一时间,分享更多Hadoop干货,欢迎转发和分享。
原创文章,欢迎转载,转载请注明:转载自微信公众号Hadoop实操
date类型_06076.1.0如何将ORC格式且使用了DATE类型的Hive表转为Parquet表相关推荐
- SpringBoot升级到2.0后默认时间格式变化_springboot接收date类型参数
springboot1.x时,请求返回默认将Date类型转换成时间戳: createTime: 1544693261000 然而在升级到springboot2.0后,默认返回的时间格式变成了UTC字符 ...
- 处理new Date()在safari浏览器上的某些日期格式导致的Invalid Date
文章目录 1 原因 2 解决 2.1 自定义一个构造函数 2.2 重写Date函数 2.2.1 简配版 3 没有解决的问题 参考: 1 原因 safari浏览器的new Date(dateStr: s ...
- iso8601 转换 java_java积累----ISO8601格式时间转化为Datetime类型
转载请注明出处:java积累----ISO8601格式时间转化为Datetime类型 api中如果需要根据时间来做筛选,需要有请求的时间戳.时间参数的日期格式按照ISO8601标准表示,并需要使用UT ...
- java积累----ISO8601格式时间转化为Datetime类型
转载请注明出处:java积累----ISO8601格式时间转化为Datetime类型 api中如果需要根据时间来做筛选,需要有请求的时间戳.时间参数的日期格式按照ISO8601标准表示,并需要使用UT ...
- 数据库的字段是date java里面能用timestamp吗_数据库中DATETIME,DATE和TIMESTAMP类型 的区别...
满意答案 KakiZoR 2017.03.29 采纳率:59% 等级:9 已帮助:668人 当你需要同时包含日期和时间信息的值时则使用DATETIME类型.MySQL以'YYYY-MM-DD H ...
- mysql 表设计 date_mysql 表 Date类型
举个例子给你吧,mysql的 datetime字段 有表: CREATE TABLE `u_user` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `nick ...
- Visual Basic 9.0 前沿播报·静态篇(一)局部变量类型推测和数组初始化器
不要惊讶,每个PDC上都会有微软最新产品的前瞻,所以在Visual Basic 2005发布以前看到Visual Basic 9.0的消息就是可以理解的了.Visual Basic 9.0 (code ...
- C#3.0 为我们带来什么(5) —— 匿名类型
C#3.0 为我们带来什么(5) -- 匿名类型 var employee= new{Age =25,Name = "james" } 无须显示声明一个类,而且在初始化器里面可以获 ...
- java参数传入泛型类型_Java 5.0 泛型之 使用泛型统一传入的参数类型
Java 5.0 泛型之 使用泛型统一传入的参数类型 package Demo; // 使用泛型统一传入的参数类型 class Info28 { private T var; // 此类型由外部决定 ...
最新文章
- C++:名字空间的使用
- 使用Spring Cloud Function框架进行面向函数的编程
- 求1到100中9的个数
- 微软发布研究报告:企业数据管理普遍混乱,揭秘大数据分析趋势以及PowerBI的崛起机遇...
- 基于SpringBoot 2.0正式版的SpringCloud的微服务实战项目搭建
- laravel event
- 转载:手把手教你把Vim改装成一个IDE编程环境(图文)
- GD32VF103开发环境简单介绍
- java 自动发微博_使用node搭建自动发图文微博机器人
- python体重转换_Python第十二课 计算体脂率2.0
- 委托、事件 茴字有几种写法
- android 播放一段音效,android 之使用SoundPool播放音效(Duang~)
- 十分详细的阳光十六法则
- linux下安装python3出现无configure_Linux下安装Python3.9.0
- 记录下Tesla V100s vmware EXTI 7.0 虚拟机直通显卡cuda、cudnn安装
- 检索 COM 类工厂中 CLSID 为{...} 的组件时失败,出现以下错误: 80070005、8000401A的错误解决方法
- 树莓派入门(一) - 下载安装系统镜像,Raspbian和Centos
- 国内大陆有哪些芯片公司处于世界前10?一起看看!
- fireworks 8中文版
- STM32F103C8T6驱动SYN6288语音模块(暂时做到能播放连续语音,其他诸如背景音乐的功能还没做)