热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

hive中如何将rcfile,textfile,sequencefile,以及自定义存储格式的数据相互转换

hive中常见的文件存储格式也就3种,textfile,sequencefile,rcfile.实际开发中,很多公司都会采用自定义的存储格式来实现数据的特定存储。一方面是为了

        hive中常见的文件存储格式也就3种,textfile,sequencefile,rcfile.实际开发中,很多公司都会采用自定义的存储格式来实现数据的特定存储。一方面是为了数据安全,另一方面是根据自身情况实现数据存储的效益最大化。

       1.使用textfile存储格式创建表

create table fdm_sor.saveas_textfile(
id int ,
name string )
stored as textfile
       2.使用sequencefile存储格式创建表
 
  create table fdm_sor.saveas_sequencefile(
  id int ,
  name string )
  stored as sequencefile

        3.使用rcfile存储格式创建表      

create table fdm_sor.saveas_rcfile(
  id int ,
  name string )
  stored as rcfile
        4.使用自定义格式创建表
add jar /home/bigdata/software/hive/ext-lib/suning-hive-inputformat.jar; 
create table fdm_sor.saveas_suningformat(
id int ,
name string )
STORED AS
 INPUTFORMAT
'com.suning.hive.input.CommonTextInputFormat' 
OUTPUTFORMAT 
'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat';

       像我们公司,大数据中心分析的数据一般都是从业务的数据库,如mysql,oracle,db2等里面直接抽数的,所以在hive的SSA层存储数据的时候,默认都是用自定义存储格式和自定义的Serde序列化。在sor处理层所有的数据存储都是默认使用rcfile文件存储格式。在dm层,一般都是使用textfile存储数据。sequencefile基本不怎么用。那不同的层面数据该如何转换呢。其实在hive中不同存储格式转换很简单,只需要使用insert ....select 即可
       1.将textfile格式的数据如何转换成rcfile存储

hive (fdm_sor)> insert overwrite table saveas_rcfile
              > select id ,name from  saveas_textfile;

       2.同理将textfile存储格式的数据转换成sequencefile

hive (fdm_sor)> insert overwrite table saveas_sequencefile
              > select id ,name from  saveas_textfile; 

      3.总之都可以按照上面这种方式将不同存储格式的数据互相转换。

     注意:如果往hive中导入的数据源不是数据库(也就是说不是通过insert ...select形式),而是外部文件的形式,比如通过load data ....加载的方式,那么要注意建表时存储格式必须和提供的文件存储格式一致。否则数据导入失败,这种情况下不能将三种存储格式任意转换使用。比如,将提供的文本文件,用load导入到stored  as rcfile表中,则报错,文件格式不匹配。这种情况,文本文件只能load进stored as textfile表中,然后再通过上面的insert ....select形式进行其他格式的转换。

           此外,如何通过load 形式往表中导入数据时,除了定义对应的存储格式,还要定义数据记录解析格式,比如文本文件中数据以‘||’来分割的,那么创建表时要指定row format delimited fields terminated by '||',而不能使用默认的serde进行解析,否则该条记录数据都会加载到一个列中。

      具体三者之间的关系和区别使用,参考我的其他博客。


推荐阅读
  • Python SQLAlchemy库的使用方法详解
    本文详细介绍了Python中使用SQLAlchemy库的方法。首先对SQLAlchemy进行了简介,包括其定义、适用的数据库类型等。然后讨论了SQLAlchemy提供的两种主要使用模式,即SQL表达式语言和ORM。针对不同的需求,给出了选择哪种模式的建议。最后,介绍了连接数据库的方法,包括创建SQLAlchemy引擎和执行SQL语句的接口。 ... [详细]
  • Oracle Database 10g许可授予信息及高级功能详解
    本文介绍了Oracle Database 10g许可授予信息及其中的高级功能,包括数据库优化数据包、SQL访问指导、SQL优化指导、SQL优化集和重组对象。同时提供了详细说明,指导用户在Oracle Database 10g中如何使用这些功能。 ... [详细]
  • 合并列值-合并为一列问题需求:createtabletab(Aint,Bint,Cint)inserttabselect1,2,3unionallsel ... [详细]
  • 本文介绍了在使用Laravel和sqlsrv连接到SQL Server 2016时,如何在插入查询中使用输出子句,并返回所需的值。同时讨论了使用CreatedOn字段返回最近创建的行的解决方法以及使用Eloquent模型创建后,值正确插入数据库但没有返回uniqueidentifier字段的问题。最后给出了一个示例代码。 ... [详细]
  • 大数据Hadoop生态(20)MapReduce框架原理OutputFormat的开发笔记
    本文介绍了大数据Hadoop生态(20)MapReduce框架原理OutputFormat的开发笔记,包括outputFormat接口实现类、自定义outputFormat步骤和案例。案例中将包含nty的日志输出到nty.log文件,其他日志输出到other.log文件。同时提供了一些相关网址供参考。 ... [详细]
  • 在数据分析工作中,我们通常会遇到这样的问题,一个业务部门由若干业务组构成,需要筛选出每个业务组里业绩前N名的业务员。这其实是一个分组排序的 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 原文地址:https:www.cnblogs.combaoyipSpringBoot_YML.html1.在springboot中,有两种配置文件,一种 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 解决VS写C#项目导入MySQL数据源报错“You have a usable connection already”问题的正确方法
    本文介绍了在VS写C#项目导入MySQL数据源时出现报错“You have a usable connection already”的问题,并给出了正确的解决方法。详细描述了问题的出现情况和报错信息,并提供了解决该问题的步骤和注意事项。 ... [详细]
  • 本文详细介绍了MySQL表分区的创建、增加和删除方法,包括查看分区数据量和全库数据量的方法。欢迎大家阅读并给予点评。 ... [详细]
  • Go GUIlxn/walk 学习3.菜单栏和工具栏的具体实现
    本文介绍了使用Go语言的GUI库lxn/walk实现菜单栏和工具栏的具体方法,包括消息窗口的产生、文件放置动作响应和提示框的应用。部分代码来自上一篇博客和lxn/walk官方示例。文章提供了学习GUI开发的实际案例和代码示例。 ... [详细]
  • 本文详细介绍了如何使用MySQL来显示SQL语句的执行时间,并通过MySQL Query Profiler获取CPU和内存使用量以及系统锁和表锁的时间。同时介绍了效能分析的三种方法:瓶颈分析、工作负载分析和基于比率的分析。 ... [详细]
  • WhenIusepythontoapplythepymysqlmoduletoaddafieldtoatableinthemysqldatabase,itdo ... [详细]
author-avatar
你给的喜欢--触不成及
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有