hive導入數據的三種方式

首先咱們在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

方式三:建立文件夾後load數據到分區

首先建立目錄:
如方式1的第一句代碼。table

而後上傳數據:test

load data local inpath '/opt/datas/test.txt' into table stg.test partition(bus_date='20191101');

最後查詢數據也有了。若是直接上傳不採用腳本的話,這種方式是最快的。最適合一次性使用。因此我也用了這種方式從其餘服務器上導入csv文件。

相關文章
相關標籤/搜索