本文共 767 字,大约阅读时间需要 2 分钟。
温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。
1.问题描述
CDH中默认不支持Lzo压缩编码,需要下载额外的Parcel包,才能让Hadoop相关组件如HDFS,Hive,Spark支持Lzo编码。
具体请参考:
首先我在没做额外配置的情况下,生成Lzo文件并读取。我们在Hive中创建两张表,test_table和test_table2,test_table是文本文件的表,test_table2是Lzo压缩编码的表。如下:
通过beeline访问Hive并执行上面命令:
查询test_table中的数据:
将test_table中的数据插入到test_table2,并设置输出文件为lzo压缩:
在Hive中执行报错如下:
通过Yarn的8088可以发现是因为找不到Lzo压缩编码:
2.解决办法
通过Cloudera Manager的Parcel页面配置Lzo的Parcel包地址:
注意:如果集群无法访问公网,需要提前下载好Parcel包并发布到httpd
下载->分配->激活
配置HDFS的压缩编码加入Lzo:
保存更改,部署客户端配置,重启整个集群。
等待重启成功:
再次插入数据到test_table2,设置为Lzo编码格式:
插入成功:
首先确认test_table2中的文件为Lzo格式:
在Hive的beeline中进行测试:
Hive基于Lzo压缩文件运行正常。
2.2 Spark SQL验证
SparkSQL基于Lzo压缩文件运行正常。
醉酒鞭名马,少年多浮夸! 岭南浣溪沙,呕吐酒肆下!挚友不肯放,数据玩的花!
温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。
转载于:https://blog.51cto.com/14049791/2316621