2014-02-28 50 views
1

我是新來蜂巢。我只是想知道我可以將數據插入到蜂巢表直接如何將直接值插入配置單元表?

Create table t1 (name string) 

and I want to insert a value eg name = 'John' 

但我見過這麼多的文件沒有數據直接插入到表中的任何例子。要麼我需要創建一個文件內部或外部,並添加值'約翰',並加載這些數據到表中,或者我可以從另一個表中加載數據。

我的目標是通過直接提供值直接將數據添加到配置單元表中?我提供了一個SQL查詢,我要實現的一個oracle實例:

INSERT INTO t1 (name) 
values ('John') 

我想等效聲明如上蜂巢?

+1

[類似的問題](http://stackoverflow.com/questions/21413217/how-do-i-create-a-中找到hive-table-without-any-intermediate-files) – libjack

回答

0

您可以使用蜂巢的表生成功能,如exlode()或棧()

表結構爲(名稱字符串,年齡智力)

INSERT INTO TABLE target_table 
SELECT STACK(
    2,     # Amount of record 
    'John', 80,  # record 1 
    'Bill', 61   # record 2 
    ) 
FROM dual    # Any table already exists 
LIMIT 2;    # Amount of record! Have to add this line! 

這會在您的target_table中添加2條記錄。

1

將值插入表中現在受到版本Hive 0.14中的HIVE的支持。

CREATE TABLE students (name VARCHAR(64), age INT, gpa DECIMAL(3, 2)) CLUSTERED BY (age) INTO 2 BUCKETS STORED AS ORC;

INSERT INTO TABLE students VALUES ('fred flintstone', 35, 1.28), ('barney rubble', 32, 2.32);

更多可以在https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DML#LanguageManualDML-InsertingvaluesintotablesfromSQL

+1

需要注意的是,除非正在使用事務特性,或者VALUES數組非常大,否則這通常是反模式,因爲每個插入至少生成一個HDFS中的新文件。對數千個文件的查詢效率很低。 –