ORC 介绍

ORC 文件格式是 Hive 0.11.0 版本引入的一种文件格式。ORC 的引入是为了解决其他 Hive 文件格式的局限性。使用 ORC 文件格式提升 Hive 读取、写入及处理数据的性能。

与 RCFile 对比,ORC 文件格式有很多优点:每个 Task 只输出一个文件,降低 NameNode 的负载。

Hive 数据类型支持,包括:datetime、decimal 以及复杂数据类型(struct、list、map、union)。

文件中存储轻量级的索引:跳过不通过谓语过滤的行组

跳转到指定的行

基于数据类型的块模式压缩:整型数据列采用行程长度编码(run-length encoding)

字符串数据列采用词典编码(dictionary encoding)

使用独立的 RecordReader 并发读取相同的文件

无需扫描 markers 就可以分割文件的能力

绑定读写需要的内存量

Sqoop 支持 ORC

通过 Sqoop-HCatalog 集成解决 Sqoop 不支持 ORC 的问题。

HCatalog 背景HCatalog 是 Hadoop 的一个 table 与存储管理的一个服务,用户可以更容易地使用不同的数据处理工具 Pig、MapReduce 和 Hive 读写数据。HCatalog 表的抽象呈现给用户一个 HDFS 分布式文件系统(HDFS)中的关系视图,用户不需要担心数据存储在哪里及数据的存储格式:RCFile 格式、text 文件、或者 SequenceFile。

HCatalog 支持读写任何实现了 Hive SerDe(serializer-deserializer)的文件格式。默认的,HCatalog 支持 RCFile、CSV、JSON 和 SequenceFile。要使用用户自定义格式,必须提供 InputFormat 和 OutputFormat 及 SerDe。

Sqoop 使用 HCatalog 抽象不同存储格式的能力来支持 RCFile(以及未来的文件类型)。

集成 HCatalog 后新增的参数见 Sqoop 官方文档:http://sqoop.apache.org/docs/1.4.6/SqoopUserGuide.html#_sqoop_hcatalog_integration

定制 Sqoop 改造修改 bin/sqoop 命令脚本:为 import 操作增加 Hive Table 分区数据删除逻辑,在执行导入前不需要另行清理数据,从而简化 Sqoop import 脚本的开发工作。

Sqoop 导入 ORC 实例

第一步:创建 Hive 表CREATE TABLE `dev.bims_device`(

`code` string,

`mac` string,

`wifi_mac` string,

`create_date` string,

`activate_date` string,

`state` string,

`area_id` bigint,

`city_id` bigint,

`sp_define_id` bigint)

PARTITIONED BY (

`dt` string)

stored as orc;

第二步:Sqoop importsqoop import

--hcatalog-database dev

--hcatalog-table bims_device

--hcatalog-partition-keys dt

--hcatalog-partition-values ${dt}

--connect jdbc:mysql://${host}:${port}/bims

--username "${userName}"

--password "${password}"

--table bims_device

--columns "code,mac,wifi_mac,create_date,activate_date,state,area_id,city_id,sp_define_id"

Sqoop 导出 ORC 实例

第一步:创建 MySQL 数据表CREATE TABLE `test`.`bims_device`(

`code` varchar(50),

`mac` varchar(50),

`wifi_mac` varchar(50),

`create_date` varchar(50),

`activate_date` varchar(50),

`state` varchar(50),

`area_id` bigint,

`city_id` bigint,

`sp_define_id` bigint);

第二步:Sqoop exportsqoop export

--hcatalog-database dev

--hcatalog-table bims_device

--hcatalog-partition-keys dt

--hcatalog-partition-values ${dt}

--connect jdbc:mysql://${host}:${port}/test?useCompression=true

--username ${userName}

--password ${password}

--table bims_device

注意事项- MySQL 表字段名称必须与 Hive 仓库中的表字段名称一致

- Sqoop ORC 导出时,数据类型需要转换时如果存在脏数据会导致导出失败。例如,长度为 0 的 String 如果导出为 int 时。

- 导出时需要提前清理 MySQL 中之前导出的数据,避免重复运行时造成数据重复。

sqoop导出orc数据至mysql_Sqoop 支持 ORC 文件格式相关推荐

  1. SQOOP 导出Hive数据到MySQL

    基本知识: Sqoop导出的基本用法:https://sqoop.apache.org/docs/1.4.6/SqoopUserGuide.html#_syntax_4  的10. sqoop-exp ...

  2. sqoop将hbase数据导入mysql_Sqoop将mysql数据导入hbase的血与泪

    Sqoop将mysql数据导入hbase的血与泪(整整搞了大半天) 版权声明:本文为yunshuxueyuan原创文章. 如需转载请标明出处: https://my.oschina.net/yunsh ...

  3. 使用sqoop导出mysql数据时错误处理【com.mysql.jdbc.RowDataDynami】

    故障现象 在HDP sandbox中使用sqoop导出mysql数据报错 18/06/24 07:03:31 INFO manager.MySQLManager: Preparing to use a ...

  4. sqoop 导出hive数据到MySQL数据库当中

    常用命令: 查看hive中表的结构: desc table_name; 查看hive中表的详细结构:desc formatted table_name; 我们想要将hive表中的数据导出到MySQL当 ...

  5. sqoop导出solr数据_Apache Atlas - 强大的元数据管理工具

    构建和安装Apache Atlas 构建Apache Atlas 下载 Apache Atlas 1.0.0 发行版源码, apache-atlas-1.0.0-sources.tar.gz, 从 d ...

  6. mysql hbase 同步_HBase 简介和使用 Sqoop 同步 Mysql 数据到 HBase

    HBase 数据模型 Namespace: 命名空间 类似于关系型数据库中的 database schema Table: 表 一个 Namespace 下有多个表,一个表可以包含多个行 Row: 行 ...

  7. python etl工具 sqoop hive_python脚本 用sqoop把mysql数据导入hive

    转:https://blog.csdn.net/wulantian/article/details/53064123 用python把mysql数据库的数据导入到hive中,该过程主要是通过pytho ...

  8. 如何完美解决Sqoop导入导出MySQL数据错位问题

    我发现小伙伴们在使用Sqoop把数据从MySQL导入到Hive的过程中经常会遇到数据错位的问题,虽然最后都是通过添加参数的方法来解决这个问题,但是我认为这并不是一个完美的解决方案,所以花了一点时间研究 ...

  9. Z05 - 044、Sqoop 导出 - 导出 HDFS 数据到 MySQL

    初学耗时:0.5h 注:CSDN手机端暂不支持章节内链跳转,但外链可用,更好体验还请上电脑端. 一.Sqoop 导出 - 导出 HDFS 数据到 mysql 记忆词:   导出 HDFS 数据到 My ...

最新文章

  1. python ascii函数二进制_python模块介绍- binascii:二进制和ASCII互转以及其他进制转换...
  2. c语言程序与设计苏小红,c语言程序设计苏小红
  3. 中国人工智能源头创新的突破点在哪里?创投圈这么看
  4. java基础 知识点
  5. proc maps分析coredump
  6. for-each的使用
  7. 元宇宙这把火开始烧向打工人
  8. Xamarin的坑 - 绑定(一) - 拿微信iOS SDK 简单说起
  9. ZStack实践汇 | ZStack部署实战之VDI异构部署
  10. 施耐德 m340 编程手册_施耐德变频器学习之参数配置
  11. 笛卡尔积生成商品SKU
  12. TCP通信协议基本操作
  13. python学员管理系统
  14. 《易经》全文翻译(值得收藏)
  15. 软考备战:软考中级课程+参考资料
  16. BZOJ 1123 POI2008 BLO Tarjan+树形DP
  17. 打开桌面计算机投屏到扩展屏,电脑投屏到电视显示不完全解决办法
  18. 筹码分布的计算方法笔记
  19. 二叉树专题 -- 持续更新
  20. Django使用新浪邮箱发送邮件

热门文章

  1. 2022 年全国职业院校技能大赛(中职组) 网络安全竞赛试题A 模块评分标准
  2. 2022年全国职业院校技能大赛(中职组)网络安全竞赛试题(10)(总分100分)
  3. .Net学习——委托
  4. 高等几何——射影变换4
  5. 计算机硬件工匠精神,千锤百炼 雷神工匠精神定义笔记本行业新国货
  6. 中国石油大学《行政组织学》第一次在线作业
  7. 随便写的扫雷程序.cpp
  8. linebreak_vue-cli构建的项目,eslint一直报CRLF/LF的linebreak错误
  9. 首次打开vue运行出错,error Expected linebreaks to be ‘CRLF‘ but found ‘LF‘ linebreak-style
  10. 郑州oracle专业培训