Hadoop的一些经验总结

1.编写JAVA代码出现如下问题:

[color=darkred][b]2012-4-20 19:36:55 org.apache.hadoop.util.NativeCodeLoader <clinit>
璀﹀憡: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable[/b]
[/color]

Hadoop是使用Java语言开发的,但是有一些需求和操作并不适合使用java,所以就引入了本地库(Native Libraries)的概念,通过本地库,Hadoop可以更加高效地执行某一些操作。
上述意思是说不能再如本地类库,处理的方式也比较简单:

在Hadoop的配置文件core-site.xml中可以设置是否使用本地库:

<property>
<name>hadoop.native.lib</name>
<value>true</value>
<description>Should native hadoop libraries, if present, be used.</description>
</property>

2.HIVE的使用
HIVE中是等值JOIN的,也支持左右连接;
在使用写有 Join 操作的查询语句时有一条原则:应该将条目少的表/子查询放在 Join 操作符的左边。
原因是在 Join 操作的 Reduce 阶段,位于 Join 操作符左边的表的内容会被加载进内存,将条目少的表放在左边,可以有效减少发生 OOM 错误的几率。


3.hadoop原生默认的压缩文件的解析:
hadoop中的文件是默认压缩的,在hadoop中的API中是根据文件后缀名成来判断该文件的压缩类型的
例如test.deflate文件,其hadoop的文件压缩格式就是deflate,这种是默认的hadoop文件要所格式,当然还支持其他好几种压缩格式,比如Gzip,bzip2,zlib等
CompressionCodecFactory factory = new CompressionCodecFactory(conf);
CompressionCodec codec = factory.getCodec(p);
if (codec == null) {
throw new IOException(
String.format(
"Can't find any suitable CompressionCodec to this file:%s",
p.toString()));
}
in = fs.open(p);
CompressionInputStream cin = codec.createInputStream(in);
br = new BufferedReader(new InputStreamReader(cin, encoding),
bufferSize);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值