2016-06-16 7 views
0

日付を使って作業するとき、HIVEから奇妙な結果が得られます。手始めにHIVEが間違った日付を返す

、私はハイブ1.2.1000.2.4.0.0-169に

を使用している私は、ソートの(切り取ら)定義されたテーブルを持っている:

hive> DESCRIBE proto_hourly; 
OK          
elem     string          
protocol    string          
count     bigint 
date_val    date           
hour_id     tinyint         

# Partition Information   
# col_name    data_type    comment    

date_val    date           
hour_id     tinyint          
Time taken: 0.336 seconds, Fetched: xx row(s) 
hive> 

[OK]をので、私は、データがロードされています今年度は私は特定の日付のクエリでいくつかの "奇妙さ"に気付き始めましたが、指摘されている例のために、ここでは私はちょうど '2016-06-01'を求めていますが、私は'2016-05-31 'に戻ります。 .why

hive> SET i="2016-06-01"; 
hive> with uniq_dates AS (
    >  SELECT DISTINCT date_val as date_val 
    >  FROM proto_hourly 
    >  WHERE date_val = date(${hiveconf:i})) 
    > select * from uniq_dates; 
Query ID = hive_20160616154318_a75b3343-a2fe-41a5-b02a-d9cda8695c91 
Total jobs = 1 
Launching Job 1 out of 1 


Status: Running (Executing on YARN cluster with App id application_1465936275203_0023) 

-------------------------------------------------------------------------------- 
     VERTICES  STATUS TOTAL COMPLETED RUNNING PENDING FAILED KILLED 
-------------------------------------------------------------------------------- 
Map 1 .......... SUCCEEDED  1   1  0  0  0  0 
Reducer 2 ...... SUCCEEDED  1   1  0  0  0  0 
-------------------------------------------------------------------------------- 
VERTICES: 02/02 [==========================>>] 100% ELAPSED TIME: 3.63 s  
-------------------------------------------------------------------------------- 
OK 
2016-05-31 
Time taken: 6.738 seconds, Fetched: 1 row(s) 
hive> 

答えて

1

もう少しテストすると、クラスタ内の別のタイムゾーンに1台のサーバーが構成されていることがわかりました。 3つのノードのうち2つはUTCでしたが、1つのノードはまだアメリカ/デンバーに残りました。

Map/Reduceジョブが異なるタイムゾーンでサーバー上で実行されていたため、奇妙なデータオフセット問題が発生していたと思います。

日2016年6月1日UTCは確かに等しい日2016年5月31日アメリカ/デンバー

サイレントTZ変換...

を行います
関連する問題