小强的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的默认分隔符是’\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。
 
 
 
 
 
 

 

转载于:https://www.cnblogs.com/Derek86/p/9122533.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值