2017-03-09 11 views
1

avoファイル形式にsqoopを使用して、選択した列のテーブルをインポートしました。 avro-toolsを使用すると、日付が奇妙な形式で表示されます(否定的)。どのように日付をデコードできますか?Avro tojsonの日付形式

{"first_name":{"string":"Mary"},"last_name": {"string":"Botman"},"birth_date":{"long":-345772800000}} 

MySQLのクエリファイブとして正しい形式

mysql> select first_name, last_name, birth_date from employees where first_name like 'Mary' and last_name ='Botman'; 
    +------------+-----------+------------+ 
    | first_name | last_name | birth_date | 
    +------------+-----------+------------+ 
    | Mary  | Botman | 1959-01-17 | 
    +------------+-----------+------------+ 
    1 row in set (0.07 sec) 

答えて

0

長い値-345772800000公知の標準的な基準時間からのミリ秒...

...指定された数を表します 「時代」1970年1月1日00:00:00 GMT 1970年1月1日以降の ミリ秒の数

あなたの例では、それは負の値なので、「エポック」から時間的に後ろに数えています。 Javaコードでは、次のようにこの値からLocalDateを作成することができます。これは、Hiveクエリー結果に示されているのと同じ結果をもたらします。

LocalDate date17Jan1959 = Instant.ofEpochMilli(-345772800000L) 
    .atZone(ZoneOffset.UTC) 
    .toLocalDate();