2017-10-29 5 views
-1

外部テーブルに上書きを挿入しました。私は、外部テーブルが指す下地の場所に新しいデータを見ることができます。しかし、テーブルにはまだ古いデータが表示されます。基本ディレクトリの内容のデータが変更されたときに外部テーブルを更新します。

私の知る限り、外部テーブルは基礎となるディレクトリからデータを取得します。しかし、ここでは起こっていません。

どうすればよいですか?

私が今まで試したことは以下の通りです。

desc temp_table; 

id string 
name string 
designation string 

partition column: date 


alter table temp_table add columns(new_date string); 

insert overwrite table temp_table partition(date) select id,name,designation,"some date" as new_date,date from temp_table; 
+0

ようこそスタックオーバーフロー!良い質問をするのに役立つように、私たちのSO質問チェックリストを見直して、良い答えを得てください。既に試したコードの最小、完全、かつ検証可能な例を貼り付けてください。 – Heri

+0

テーブル定義とデータの挿入方法を知っておくと便利です。ハイブやインパラのデータを読んでいますか?何がhadoopディストロ? – hlagos

+0

あなたはこれまでに試したことを共有していただけますか? – Joby

答えて

0

私はたくさんの努力をしましたが、この問題の答えはcoludntです。私は代わりの方法を使って仕事をしました。私はここで共有しているので、誰かが同じ問題に直面した場合、彼はこれを使うことができます。

1.作成テーブルtarget_table_name like source_table_name;

  1. 上書き挿入テーブルtarget_table_nameパーティション(partition_column_name)select * from source_table_name;

    外部テーブルを作成すると、source_table_nameのように外部テーブルが作成されます。file_format_of_source_tableに格納されます。 'location_of_source_table';

    msck修復テーブルanother_table;

    次に、source_tableを削除し、another_tableの名前をsource_table_nameに変更できます。

関連する問題