接著第一遍。中間間隔了大約半年的時間了,話不多說,直接進入主題。
這篇是主要是應用篇。目前的環境是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 ./上傳
應用問題:
hive的預設分隔符是』\001『,通過資料清洗時需要注意。
中間過程的清洗表建議使用rcf格式,這樣不易出現由於資料問題導致的資料截斷。建表語句後 +stored as rcfile; 如
create table hive_table(id string,name string) stored as rcfile; 即可。rcf和其他的格式的區別具體可在網上檢視相關資料。
1、udf
udf是個絕對的好東西,目前j**a自不必說,絕對的支援。另外喜歡研究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學習之路
本人一直在做net開發,接觸這行有6年了吧。畢業也快四年了 6年是因為大學就開始在一家小公司做門戶 哈哈哈 之前一直秉承著學要精,就一直一門心思的在做net 也是懶吧 最近的工作一直都和大資料清洗相關,想著要學學真正的大資料懶,不然都不好意思說自己是做資料清洗的。目前關於hadoop的學習資料已經非...
Hadoop學習之路
hadoop是谷歌的集群系統的開源實現 google集群系統 gfs mapreduce bigtable hadoop主要由hdfs hadoop distrubuted file system mapreduce和hbase組成。hadoop的初衷是為解決nutch的海量資料爬取和儲存的需要 h...
我的hadoop大資料之路(二)
hadoop的安裝包中的conf目錄,那裡有很多配置,但只需對其中的三個檔案進行修改 core site.xml,hdfs site.xml 和mapred site.xml。1 首先我們修改core site.xml檔案 fs.default.name hdfs localhost 9000 這個...