小強的Hadoop學習之路(二)
阿新 • • 發佈:2018-06-01
com TE 區別 截斷 用戶 分開 路徑問題 登陸用戶 學習
註意:
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。
接著第一遍。中間間隔了大約半年的時間了,話不多說,直接進入主題。
這篇是主要是應用篇。目前的環境是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指輸出的列的別名。UDF函數調試的時候,可以使用【cat xx.txt|python udf.py】的方式,不用經過Hive客戶端。
Hive傳入python腳本中的數據,是通過‘\t‘來分隔的,所以Python腳本用通過.split(‘\t‘)來區分開;有時候,我們結合INSERT OVERWRITE使用上述TRANSFORM,而目標表,其分割副可能不是\t。但是請牢記:TRANSFORM的分割符號,傳入、傳出腳本的,永遠是\t。
小強的Hadoop學習之路(二)