2012-09-10 25 views
2

隨着參考下面的蜂房命令列表:蜂房負荷數據分離的絕對文件路徑

LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 ...)]

我能給的絕對文件路徑的逗號分隔的列表?
LOAD DATA INPATH 'hdfs://foo/bar1,hdfs://foo/bar2' INTO TABLE foo1

我正在尋找實際使用情況:

雖然在共同ordinator.xml使用

<datasets> 
     <dataset name="input1"> 
     <uri-template>hdfs://foo/bar/a</uri-template> 
     </dataset> 
</datasets> 
<input-events> 
     <data-in name="coordInput1" dataset="input1"> 
      <start-instance>${coord:current(-23)}</start-instance> 
      <end-instance>${coord:current(0)}</end-instance> 
     </data-in> 
</input-events> 
<action> 
    <workflow> 
     ... 
    <configuration> 
     <property> 
      <name>input_files</name> 
      <value>${coord:dataIn('coordInput1')}</value> 
     </property> 
    </configuration> 
    </workflow> 
</action>  

,假設有一個合格的一套24個HDFS作爲位置我的輸入。 如果我的配置單元查詢是某種從所有這些位置將數據加載到表中,我想使用它: CREATE TABLE table1( col1 STRING )LOCATION($ {input_files});

但是,這在蜂巢中無法正常工作。 假設:input_files解析爲hdfs://foo/bar/1,hdfs://foo/bar/2,hdfs://foo/bar/3這並不是在配置單元中的有效位置。

只有這樣,我的理解來實現這一點,運行Java映射這需要input_files作爲輸入和輸出,分別運行

`LOAD DATA INPATH 'hdfs://foo/bar/1' INTO TABLE foo1` 
`LOAD DATA INPATH 'hdfs://foo/bar/2' INTO TABLE foo1` 

動態蜂巢腳本。

所以,最後,我的問題是,當我能解決我的整個數據集的興趣,這我能爲${coord:dataIn('coordInput1')}使用,我不能利用這個蜂巢,避免個別LOAD DATA..ALTER TABLE ADD PARTITIONS..單獨陳述?

+0

我在這一刻有同樣的問題。你有一些解決方案? – chech0x

回答

0

使用java動作節點來完成這個邏輯。您可以使用逗號分割input_files,並使用hive jdbc連接在所有輸入位置的循環中執行配置單元命令。