首先咱們在hive中要建好一個表,這裏用比較難的方式來假設,假設是外部表而且是分區表stg.test,按bus_date(string)分區。sql
首先上傳數據到HDFS中:服務器
hadoop fs -mkdir -p /user/hive/warehouse/stg/test/bus_date=20191101 #建立文件夾 hadoop fs -put /opt/datas/test.txt(要上傳的文件) /user/hive/warehouse/stg/test/bus_date=20191101(上傳的目標文件夾);
查詢剛纔上傳的數據:oop
select * from stg.test where bus_date='20191101';
發現是查不到數據的,而後執行執行修復命令:code
hive> msck repair table stg.test;
再次查詢數據發現有了。hadoop
首先上傳數據到HDFS中:
如方式1.string
接着執行添加分區命令:it
alter table stg.test add partition(bus_date='20191101')
而後查詢數據發現有了。
目前抽數經常使用的方式就是這種,由於執行sql語句而且傳遞腳本其餘部分也要使用的參數:包括庫名、表名、分區字段名、分區字段值這四個參數。io
首先建立目錄:
如方式1的第一句代碼。table
而後上傳數據:test
load data local inpath '/opt/datas/test.txt' into table stg.test partition(bus_date='20191101');
最後查詢數據也有了。若是直接上傳不採用腳本的話,這種方式是最快的。最適合一次性使用。因此我也用了這種方式從其餘服務器上導入csv文件。