小强的Hadoop学习之路

Posted derek86

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了小强的Hadoop学习之路相关的知识,希望对你有一定的参考价值。

接着第一遍。中间间隔了大约半年的时间了,话不多说,直接进入主题。

这篇是主要是应用篇。目前的环境是4台机器 ,环境 centos 7.2   CDH5.10.2  网上很多安装教程,这边就不说明了。

Hive+HDFS篇。

1、路径问题

进入hive 的命令。直接 hive  (当前的登陆用户登陆)或者 sudo -u username hive   以username的用户名登陆。

hive 的操作,相信对于玩过数据的人来说都是信手拈来。

hive 的存储是存放在hdfs中的。存放路径是 

Hive 仓库目录
hive.metastore.warehouse.dir 在这个位置配置。如/data/hive/warehouse
如 库名 :user_db 表名是 user_table,则对应的路径是 /data/hive/warehouse/user_db.db/user_table
常用的命令
1、hadoop  fs -ls ./  列出
2、hadoop fs -put ./上传
3、hadoop fs -get ./下载
 
应用问题:
hive的默认分隔符是’01‘,通过数据清洗时需要注意。
中间过程的清洗表建议使用rcf格式,这样不易出现由于数据问题导致的数据截断。建表语句后 +stored as rcfile; 如  
create table hive_table(id string,name string) stored as rcfile; 即可。rcf和其他的格式的区别具体可在网上查看相关资料。
 
1、UDF
udf是个绝对的好东西,目前java自不必说,绝对的支持。另外喜欢研究python 的朋友,目前也是支持的,通过transform处理。
--首先需要添加Python文件 add file pythonfile_location; --然后通过transform(指定的列) ,指定的列是需要处理的列 select transform(指定的列) using "python filename" as (newname) --newname指输出的列的别名。
注意:
1、使用transform的时候不能查询别的列 
2、add file后面的路径可以是 Hive客户端所在的本地文件路径,也可以是Hdfs上的路径。ru add file ./ 本地路径 和 add file hdfs://./ hdfs路径
UDF函数调试的时候,可以使用【cat xx.txt|python udf.py】的方式,不用经过Hive客户端。
Hive传入python脚本中的数据,是通过‘ ‘来分隔的,所以Python脚本用通过.split(‘ ‘)来区分开;有时候,我们结合INSERT OVERWRITE使用上述TRANSFORM,而目标表,其分割副可能不是 。但是请牢记:TRANSFORM的分割符号,传入、传出脚本的,永远是 。
 
 
 
 
 
 

 



以上是关于小强的Hadoop学习之路的主要内容,如果未能解决你的问题,请参考以下文章

hadoop生态系统学习之路hive的简单使用

hadoop之学习之路

Hadoop学习之路Hadoop集群shell常用命令

Hadoop学习之路Hadoop发展背景

hadoop生态系统学习之路hbase的简单使用

Hadoop学习之路HDFS API的使用