小强的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的分割符号,传入、传出脚本的,永远是 。
UDF函数调试的时候,可以使用【cat xx.txt|python udf.py】的方式,不用经过Hive客户端。
Hive传入python脚本中的数据,是通过‘ ‘来分隔的,所以Python脚本用通过.split(‘ ‘)来区分开;有时候,我们结合INSERT OVERWRITE使用上述TRANSFORM,而目标表,其分割副可能不是 。但是请牢记:TRANSFORM的分割符号,传入、传出脚本的,永远是 。
以上是关于小强的Hadoop学习之路的主要内容,如果未能解决你的问题,请参考以下文章