web-dev-qa-db-ja.com

ファイルへのハイブクエリ出力

JavaコードでHiveクエリを実行します。例:

「SELECT * FROMテーブルWHERE id> 100」

結果をhdfsファイルにエクスポートする方法。

37
cldo

次のクエリは、結果を直接HDFSに挿入します。

INSERT OVERWRITE DIRECTORY '/path/to/output/dir' SELECT * FROM table WHERE id > 100;
61
Charles Menguy

このコマンドは、選択したテキストファイルに出力をリダイレクトします。

$Hive -e "select * from table where id > 10" > ~/sample_output.txt
35
tnguyen80

これにより、ディレクトリ下のタブ区切りファイルに結果が配置されます。

INSERT OVERWRITE LOCAL DIRECTORY '/home/hadoop/YourTableDir'
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
STORED AS TEXTFILE
SELECT * FROM table WHERE id > 100;
23
topkara

@sarath別のテーブルから別のselect *コマンドを実行して同じファイルに書き込む場合、ファイルを上書きする方法は?

上書き上書きローカルディレクトリ '/ home/training/mydata/outputs' SELECT expl、count(expl)を合計として挿入
FROM(SELECT explode(splits)as expl FROM(SELECT split(words、 '')as splits FROM wordcount)t2)t3 GROUP BY expl;

これはサラスの質問の例です

上記は、ローカルディレクトリにある出力ファイルに保存されているワードカウントジョブです。

2
Ankita

Tnguyen80の応答に同意します。クエリ全体に二重引用符を付けて指定するよりも、クエリに特定の文字列値がある場合に注意してください。

例えば:

$Hive -e "select * from table where city = 'London' and id >=100" > /home/user/outputdirectory/city details.csv
1

ファイルをHDFSに直接保存するには、次のコマンドを使用します。

Hive> insert overwrite  directory '/user/cloudera/Sample' row format delimited fields terminated by '\t' stored as textfile select * from table where id >100;

これにより、コンテンツがHDFSのフォルダー/ user/cloudera/Sampleに配置されます。

1
Aditi Gupta

これを行う理想的な方法は、「Hive -e 'select * from ...'> /filepath.txt」ではなく、「INSERT OVERWRITE DIRECTORY '/ pathtofile' select * from temp where id> 100」を使用することです。

1
Sandeep Dabhade

出力ディレクトリと出力ファイル形式などを設定するには、次を試してください。

INSERT OVERWRITE [LOCAL] DIRECTORY directory1
[ROW FORMAT row_format] [STORED AS file_format] 
SELECT ... FROM ...

例:

INSERT OVERWRITE DIRECTORY '/path/to/output/dir'
ROW FORMAT DELIMITED
STORED AS PARQUET
SELECT * FROM table WHERE id > 100;
0
kennyut

次の行をHiveコマンドラインインターフェイスに入力します。

insert overwrite directory '/data/test' row format delimited fields terminated by '\t' stored as textfile select * from testViewQuery;

testViewQuery-特定のビュー

0
Don
  1. 外部テーブルを作成する
  2. テーブルにデータを挿入する
  3. オプションでテーブルを後でドロップします。外部テーブルであるため、ファイルは削除されません。

例:

'/ user/myName/projectA_additionaData /'にクエリ結果を保存する外部テーブルの作成

CREATE EXTERNAL TABLE additionaData
(
     ID INT,
     latitude STRING,
     longitude STRING
)
COMMENT 'Additional Data gathered by joining of the identified cities with latitude and longitude data' 
ROW FORMAT DELIMITED FIELDS
TERMINATED BY ',' STORED AS TEXTFILE location '/user/myName/projectA_additionaData/';

クエリ結果を一時テーブルにフィードする

 insert into additionaData 
     Select T.ID, C.latitude, C.longitude 
     from TWITER  
     join CITY C on (T.location_name = C.location);

一時テーブルの削除

drop table additionaData
0
user2458922