温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。

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表相关推荐

  1. SpringBoot升级到2.0后默认时间格式变化_springboot接收date类型参数

    springboot1.x时,请求返回默认将Date类型转换成时间戳: createTime: 1544693261000 然而在升级到springboot2.0后,默认返回的时间格式变成了UTC字符 ...

  2. 处理new Date()在safari浏览器上的某些日期格式导致的Invalid Date

    文章目录 1 原因 2 解决 2.1 自定义一个构造函数 2.2 重写Date函数 2.2.1 简配版 3 没有解决的问题 参考: 1 原因 safari浏览器的new Date(dateStr: s ...

  3. iso8601 转换 java_java积累----ISO8601格式时间转化为Datetime类型

    转载请注明出处:java积累----ISO8601格式时间转化为Datetime类型 api中如果需要根据时间来做筛选,需要有请求的时间戳.时间参数的日期格式按照ISO8601标准表示,并需要使用UT ...

  4. java积累----ISO8601格式时间转化为Datetime类型

    转载请注明出处:java积累----ISO8601格式时间转化为Datetime类型 api中如果需要根据时间来做筛选,需要有请求的时间戳.时间参数的日期格式按照ISO8601标准表示,并需要使用UT ...

  5. 数据库的字段是date java里面能用timestamp吗_数据库中DATETIME,DATE和TIMESTAMP类型 的区别...

    满意答案 KakiZoR 2017.03.29 采纳率:59%    等级:9 已帮助:668人 当你需要同时包含日期和时间信息的值时则使用DATETIME类型.MySQL以'YYYY-MM-DD H ...

  6. mysql 表设计 date_mysql 表 Date类型

    举个例子给你吧,mysql的 datetime字段 有表: CREATE TABLE `u_user` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `nick ...

  7. Visual Basic 9.0 前沿播报·静态篇(一)局部变量类型推测和数组初始化器

    不要惊讶,每个PDC上都会有微软最新产品的前瞻,所以在Visual Basic 2005发布以前看到Visual Basic 9.0的消息就是可以理解的了.Visual Basic 9.0 (code ...

  8. C#3.0 为我们带来什么(5) —— 匿名类型

    C#3.0 为我们带来什么(5) -- 匿名类型 var employee= new{Age =25,Name = "james" } 无须显示声明一个类,而且在初始化器里面可以获 ...

  9. java参数传入泛型类型_Java 5.0 泛型之 使用泛型统一传入的参数类型

    Java 5.0 泛型之 使用泛型统一传入的参数类型 package Demo; // 使用泛型统一传入的参数类型 class Info28 { private T var; // 此类型由外部决定 ...

最新文章

  1. C++:名字空间的使用
  2. 使用Spring Cloud Function框架进行面向函数的编程
  3. 求1到100中9的个数
  4. 微软发布研究报告:企业数据管理普遍混乱,揭秘大数据分析趋势以及PowerBI的崛起机遇...
  5. 基于SpringBoot 2.0正式版的SpringCloud的微服务实战项目搭建
  6. laravel event
  7. 转载:手把手教你把Vim改装成一个IDE编程环境(图文)
  8. GD32VF103开发环境简单介绍
  9. java 自动发微博_使用node搭建自动发图文微博机器人
  10. python体重转换_Python第十二课 计算体脂率2.0
  11. 委托、事件 茴字有几种写法
  12. android 播放一段音效,android 之使用SoundPool播放音效(Duang~)
  13. 十分详细的阳光十六法则
  14. linux下安装python3出现无configure_Linux下安装Python3.9.0
  15. 记录下Tesla V100s vmware EXTI 7.0 虚拟机直通显卡cuda、cudnn安装
  16. 检索 COM 类工厂中 CLSID 为{...} 的组件时失败,出现以下错误: 80070005、8000401A的错误解决方法
  17. 树莓派入门(一) - 下载安装系统镜像,Raspbian和Centos
  18. 国内大陆有哪些芯片公司处于世界前10?一起看看!
  19. fireworks 8中文版
  20. STM32F103C8T6驱动SYN6288语音模块(暂时做到能播放连续语音,其他诸如背景音乐的功能还没做)

热门文章

  1. linux内存管理 之 内存节点和内存分区(Zone)
  2. SpringBoot实战(十四)之整合KafKa
  3. 怎样对拍、如何对拍、对拍模板
  4. Apache 流框架 Flink,Spark Streaming,Storm对比分析(一)
  5. mac下安装libpng环境
  6. codevs1258 关路灯(☆区间dp)
  7. 安卓学习-其他-文件读写
  8. 从Qcheck 1.3 不能在不同操作系统上运行问题(chro124、chro342)说开来------
  9. ARKIT/ARCore对比分析(二)
  10. grep 正则表达式及选项以及注意