0

Netezza テーブルからの sqoopd データがあり、出力ファイルは HDFS にありますが、1 つの列がタイムスタンプであり、Hive テーブルに日付列としてロードしたいと考えています。その列を使用して、日付にパーティションを作成したいと思います。どうやってやるの?

例: HDFS のデータは次のようになります = 2013-07-30 11:08:36

ハイブでは、タイムスタンプではなく日付 (2013-07-30) のみを読み込みます。その列を毎日パーティション分割したい。

列ごとにパーティションを動的に渡すにはどうすればよいですか?

ソースとして 1 つのテーブルにデータをロードしようとしました。最終テーブルでは、(date_column=dynamic date) select * from table1 でテーブル パーティションを上書き挿入します。

4

2 に答える 2

0

動的パーティションを有効にし、 to_date日付関数を使用してタイムスタンプを日付に変換することで、EMP から EMP_HISTORY テーブルをロードできます。

コードは次のようになります....

SET hive.exec.dynamic.partition=true;
SET hive.exec.dynamic.partition.mode=nonstrict;

INSERT OVERWRITE TABLE EMP_HISTORY PARTITION (join_date)
    SELECT e.name as name, e.age as age, e.salay as salary, e.loc as loc, to_date(e.join_date) as join_date from EMP e ;
于 2015-10-12T16:01:39.357 に答える
0

これらの 2 つのプロパティを設定します -

SET hive.exec.dynamic.partition=true;
SET hive.exec.dynamic.partition.mode=nonstrict;

そして、クエリは次のようになります-

INSERT OVERWRITE TABLE TABLE PARTITION (DATE_STR)
SELECT 
  :
  :
 -- Partition  Col is the last column 
  to_date(date_column) DATE_STR
FROM table1;

hive-import の 2 つのオプションを調べることができます。増分インポートの場合は、当日のパーティションを取得できます。

--hive-partition-key    
--hive-partition-value 
于 2015-01-28T22:46:51.110 に答える