0003-如何在CDH中使用LZO压缩

温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。

1.问题描述

CDH中默认不支持Lzo压缩编码,需要下载额外的Parcel包,才能让Hadoop相关组件如HDFS,Hive,Spark支持Lzo编码。

具体请参考:

https://www.cloudera.com/documentation/enterprise/latest/topics/cm\_mc\_gpl\_extras.html

https://www.cloudera.com/documentation/enterprise/latest/topics/cm\_ig\_install\_gpl\_extras.html#xd\_583c10bfdbd326ba-3ca24a24-13d80143249--7ec6

首先我在没做额外配置的情况下,生成Lzo文件并读取。我们在Hive中创建两张表,test_table和test_table2,test_table是文本文件的表,test_table2是Lzo压缩编码的表。如下:

create external table test_table(s1 string,s2 string)row format delimited fields terminated by ‘#‘location ‘/lilei/test_table‘; insert into test_table values(‘1‘,‘a‘),(‘2‘,‘b‘); create external table test_table2(s1 string,s2 string)row format delimited fields terminated by ‘#‘location ‘/lilei/test_table2‘;

通过beeline访问Hive并执行上面命令:

查询test_table中的数据:

将test_table中的数据插入到test_table2,并设置输出文件为lzo压缩:

set mapreduce.output.fileoutputformat.compress.codec=com.hadoop.compression.lzo.LzoCodec;set hive.exec.compress.output=true;set mapreduce.output.fileoutputformat.compress=true;set mapreduce.output.fileoutputformat.compress.type=BLOCK; insert overwrite table test_table2 select * from test_table;

在Hive中执行报错如下:

Error:Error while processing statement: FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask (state=08S01,code=2)

通过Yarn的8088可以发现是因为找不到Lzo压缩编码:

Compression codec com.hadoop.compression.lzo.LzoCodec was not found.

2.解决办法

通过Cloudera Manager的Parcel页面配置Lzo的Parcel包地址:

注意:如果集群无法访问公网,需要提前下载好Parcel包并发布到httpd

下载->分配->激活

配置HDFS的压缩编码加入Lzo:

com.hadoop.compression.lzo.LzoCodeccom.hadoop.compression.lzo.LzopCodec

保存更改,部署客户端配置,重启整个集群。

等待重启成功:

再次插入数据到test_table2,设置为Lzo编码格式:

set mapreduce.output.fileoutputformat.compress.codec=com.hadoop.compression.lzo.LzoCodec;set hive.exec.compress.output=true;set mapreduce.output.fileoutputformat.compress=true;set mapreduce.output.fileoutputformat.compress.type=BLOCK; insert overwrite table test_table2 select * from test_table;

插入成功:

2.1 Hive验证

首先确认test_table2中的文件为Lzo格式:

在Hive的beeline中进行测试:

Hive基于Lzo压缩文件运行正常。

2.2 Spark SQL验证

var textFile=sc.textFile("hdfs://ip-172-31-8-141:8020/lilei/test_table2/000000_0.lzo_deflate") textFile.count() sqlContext.sql("select * from test_table2")

SparkSQL基于Lzo压缩文件运行正常。

醉酒鞭名马,少年多浮夸! 岭南浣溪沙,呕吐酒肆下!挚友不肯放,数据玩的花!

温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。

原文地址:http://blog.51cto.com/14049791/2316621

时间: 2024-10-07 11:52:20

0003-如何在CDH中使用LZO压缩的相关文章

0030-如何在CDH中安装Kudu&Spark2&Kafka

温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看. 1.概述 在CDH的默认安装包中,是不包含Kafka,Kudu和Spark2的,需要单独下载特定的Parcel包才能安装相应服务.本文档主要描述在离线环境下,在CentOS6.5操作系统上基于CDH5.12.1集群,使用Cloudera Manager通过Parcel包方式安装Kudu.Spark2和Kafka的过程. 内容概括 Kudu安装 Spark2安装 Kafka安装 服务验证 测试环境 操作系统版本:CentOS6.5 C

[转] - hadoop中使用lzo的压缩

在hadoop中使用lzo的压缩算法可以减小数据的大小和数据的磁盘读写时间,不仅如此,lzo是基于block分块的,这样他就允许数据被分解成chunk,并行的被hadoop处理.这样的特点,就可以让lzo在hadoop上成为一种非常好用的压缩格式. lzo本身不是splitable的,所以当数据为text格式时,用lzo压缩出来的数据当做job的输入是一个文件作为一个map.但是sequencefile本身是分块的,所以sequencefile格式的文件,再配上lzo的压缩格式,就可实现lzo文

【总结】spark按文本格式和Lzo格式处理Lzo压缩文件的比较

1.描述spark中怎么加载lzo压缩格式的文件 2.比较lzo格式文件以textFile方式和LzoTextInputFormat方式计算数据,Running Tasks个数的影响 a.确保lzo文件所在文件夹中生成lzo.index索引文件 b.以LzoTextInputFormat处理,能够正常按分块数分配Tasks 查看文件块数量 [[email protected] ~]$ hdfs fsck /wh/source/hotel.2017-08-07.txt_10.10.16.105_2

如何在ubuntu中启用SSH服务

如何在ubuntu14.04 中启用SSH服务 开篇科普:  SSH 为 Secure Shell 的缩写,由 IETF 的网络工作小组(Network Working Group)所制定:SSH 为建立在应用层和传输层基础上的安全协议.SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议.利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题.SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台.SSH在正确使用时可弥补网络中的漏洞.SSH客户端适用于多种平台

如何在.Net中使用Redis

Redis是一个key-value存储系统.和Memcached类似,但是解决了断电后数据完全丢失的情况,而且她支持更多无化的value类型,除了和string外,还支持lists(链表).sets(集合)和zsets(有序集合)几种数据类型.这些数据类型都支持push/pop.add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的. Redis的代码遵循ANSI-C编写,可以在所有POSIX系统(如Linux, *BSD, Mac OS X, Solaris等)上安装运

如何在oracle中导入dmp数据库文件

Oracle数据导入导出imp/exp就相当于oracle数据还原与备份.exp命令可以把数据从远程数据库服务器导出到本地的dmp文件,imp命令可以把dmp文件从本地导入到远处的数据库服务器中. 利用这个功能可以构建两个相同的数据库,一个用来测试,一个用来正式使用. 执行环境:可以在SQLPLUS.EXE或者DOS(命令行)中执行, DOS中可以执行时由于 在oracle 8i 中 安装目录\ora81\BIN被设置为全局路径, 该目录下有EXP.EXE与IMP.EXE文件被用来执行导入导出.

如何在App中实现IM功能之五快速实现图片接收和发送——箭扣科技Arrownock

如何在App中实现IM功能 之五 快速实现图片接收和发送 社交App中,用户聊天发送或接收图片,是一个非常常见的场景,这里给大家介绍如何利用Arrownock的anSocial的Photo API与anIM结合,来实现发送和接收图片. 发送端详情 当发送方选择好图片点击发送时,为了不影响用户聊天过程中的体验,我们一般会将消息先插入到sqlite数据库中,刷新界面,给这条消息加上Loading动画,表示发送中.而这背后的操作为了能够节省流量的消耗,开发时因为图片往往比较大,所以并不是直接将图片的二

Hadoop2.2.0+hive使用LZO压缩那些事

环境: Centos6.4 64位 Hadoop2.2.0 Sun JDK1.7.0_45 hive-0.12.0 准备工作: yum -y install  lzo-devel  zlib-devel  gcc autoconf automake libtool 开始了哦! (1)安装LZO wget http://www.oberhumer.com/opensource/lzo/download/lzo-2.06.tar.gztar -zxvf lzo-2.06.tar.gz./config

Hive中使用LZO

hive 中使用lzo 1 启动hive 错误Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/hive/conf/HiveConf           at java.lang.Class.forName0(Native Method)           at java.lang.Class.forName(Class.java:247)           at org.apa