JavaコードでHiveクエリを実行します。例:
「SELECT * FROMテーブルWHERE id> 100」
結果をhdfsファイルにエクスポートする方法。
次のクエリは、結果を直接HDFSに挿入します。
INSERT OVERWRITE DIRECTORY '/path/to/output/dir' SELECT * FROM table WHERE id > 100;
このコマンドは、選択したテキストファイルに出力をリダイレクトします。
$Hive -e "select * from table where id > 10" > ~/sample_output.txt
これにより、ディレクトリ下のタブ区切りファイルに結果が配置されます。
INSERT OVERWRITE LOCAL DIRECTORY '/home/hadoop/YourTableDir'
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
STORED AS TEXTFILE
SELECT * FROM table WHERE id > 100;
@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;
これはサラスの質問の例です
上記は、ローカルディレクトリにある出力ファイルに保存されているワードカウントジョブです。
Tnguyen80の応答に同意します。クエリ全体に二重引用符を付けて指定するよりも、クエリに特定の文字列値がある場合に注意してください。
例えば:
$Hive -e "select * from table where city = 'London' and id >=100" > /home/user/outputdirectory/city details.csv
ファイルを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に配置されます。
これを行う理想的な方法は、「Hive -e 'select * from ...'> /filepath.txt」ではなく、「INSERT OVERWRITE DIRECTORY '/ pathtofile' select * from temp where id> 100」を使用することです。
出力ディレクトリと出力ファイル形式などを設定するには、次を試してください。
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;
次の行をHiveコマンドラインインターフェイスに入力します。
insert overwrite directory '/data/test' row format delimited fields terminated by '\t' stored as textfile select * from testViewQuery;
testViewQuery
-特定のビュー
例:
'/ 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