码迷,mamicode.com
首页 > 其他好文 > 详细

小强的Hadoop学习之路(二)

时间:2018-06-01 17:37:03      阅读:194      评论:0      收藏:0      [点我收藏+]

标签:centos   comm   sel   java   查看   tab   use   研究   的区别   

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

这篇是主要是应用篇。目前的环境是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的默认分隔符是’\001‘,通过数据清洗时需要注意。
中间过程的清洗表建议使用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脚本中的数据,是通过‘\t‘来分隔的,所以Python脚本用通过.split(‘\t‘)来区分开;有时候,我们结合INSERT OVERWRITE使用上述TRANSFORM,而目标表,其分割副可能不是\t。但是请牢记:TRANSFORM的分割符号,传入、传出脚本的,永远是\t。
 
 
 
 
 
 

 

小强的Hadoop学习之路(二)

标签:centos   comm   sel   java   查看   tab   use   研究   的区别   

原文地址:https://www.cnblogs.com/Derek86/p/9122533.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!