2014-11-06 65 views
2

我想準備樣本數據,作爲以拼塊格式存儲的配置單元表進行測試。表是這樣的:批量插入數百萬記錄使用配置單元sql配置單元?

hive> CREATE TABLE exps (sn STRING, buildNum STRING, shortProdName 
STRING, userIV STRING, cfs STRUCT<version : STRING, name : STRING, 
objArray : ARRAY<STRUCT<id : STRING, properties : INT>> >) STORED AS PARQUET; 

然後我寫了一個SQL文件說:「sample.sql」,其中包含數以百萬計的SQL INSERT命令行。

$ /opt/hive-0.13.1/bin/hive -f sample.sql

這將導致蜂巢開始大量的地圖,減少就業機會,並通過一個執行一個,這是很慢。

所以我的問題是:有沒有更好的方法來做到這一點?

+0

sample.sql包含什麼? – 2014-11-06 08:50:27

+0

大量插入行如下所示:INSERT INTO TABLE EXPS select'「0017C5CAE03A''''4.0.3''''TZ-205''''keu3zm4ctkzjweh8'',named_struct('Version','1' ,'name','Default','objArray',array(named_struct('id','WLAN','properties',50973,'ZoneType','SonicPointProfHandle',0),named_struct('id', 'WAN','properties',50973,'ZoneType',1,'SonicPointProfHandle',0))); – Jacky 2014-11-06 08:59:47

回答

-4

我不是在SQL那麼專業,但我認爲這只是將數據插入到數據庫

INSERT INTO TABLE(c1,c2,...) VALUES(v1,v2,...); 
+0

這是標準的插入命令,但OP正在討論批量插入,所以顯然這不會幫助他們... – webeno 2014-11-13 08:00:57

1

有一個在蜂巢無虛表的方式,所以sample.sql將無法正常工作。

由於需要使用SQL嘗試在蜂巢地板格式,我的建議是

  1. 負載在像MySQL關係數據庫中的數據。
  2. 使用Apache Sqoop將數據從關係數據庫導入HDFS。
  3. 創建拼接格式的Hive表格
  4. 將數據從HDFS加載到Hive表格。