web-dev-qa-db-ja.com

別のテーブルから選択して外部テーブルを作成する

HDInsightを使用しており、クエリの実行が終了したらクラスターを削除する必要があります。ただし、別の日を生き残るためには、収集したデータが必要です。 table1から計算列を作成し、それらをtable2に挿入するクエリに取り組んでいます。まず、行をコピーする簡単なテストが必要でした。 selectステートメントから外部テーブルを作成できますか?

drop table if exists table2;

create external table table2 as
select *  
from table1
STORED AS TEXTFILE LOCATION 'wasb://{container name}@{storage name}.blob.core.windows.net/';
9
Roger

はい。ただし、2つのコマンドに分ける必要があります。最初に外部テーブルを作成し、次にそれを入力します。

create external table table2(attribute STRING)
STORED AS TEXTFILE
LOCATION 'table2';

INSERT OVERWRITE TABLE table2 Select * from table1;

Table2のスキーマは、selectクエリと同じである必要があります。この例では、1つの文字列属性のみで構成されています。

7
FtoTheZ

これは古すぎる質問だと思いますが、ここに解決策があります。

CREATE EXTERNAL TABLE table2
STORED AS textfile
LOCATION wasb://....
AS SELECT * FROM table1
1
Yuta Imai

「asselect」句を使用した外部テーブルの作成はHiveでサポートされていないため、最初に完全なDDLコマンドを使用して外部テーブルを作成してから、データをテーブルにロードする必要があります。さまざまなデータ形式のサポートについては、 this を参照してください。

create external table table_ext(col1 typ1,...)
STORED AS ORC
LOCATION 'table2'; // optional if not provided then default location is used

INSERT OVERWRITE TABLE table_ext Select * from table1;

table_extのDDLがtable1と同じであることを確認してください。

0
Sanjay Divgi