2017-01-24 5 views
2

インパラの時間がGMT形式で表示されているときに、ハイブのタイムスタンプにdatefeildをfrom_unixtime(unix_timestamp(), 'yyyy-MM-dd HH:mm:ss') as timestamp) as column_name,としてキャストしています。すべてのタイムスタンプフィールドを作成した列だけでなく、GMT形式に変換しています。インパラが時間をGMTに変換しているのを避ける方法

時刻を表示する方法は?または私はそれをestに変換できますか?

SQLクエリまたはスパーク/スカラコードで助けてください、私はこれを試しましたHow to convert a Date String from UTC to Specific TimeZone in HIVE?それは私に役立ちます。

答えて

0

これを試しましたか?

SELECT from_utc_timestamp(from_unixtime(unix_timestamp(), 'yyyy-MM-dd HH:mm:ss'), 'GMT-4') as column_name; 

日付をESTタイムゾーンに変換する必要があります。また、あなたは時間システム

Impala timestamps don't match Hive - a timezone issue?

Regaards代わりに使用するデータを読み込みます場合は、寄木細工の日付形式にに関する問題思いやり!

+0

私はこれを試してみましたが、私はそれが読み込みでは動作しますが、書き込みでは動作しません。ありがとうございます – Rob

1

時間をUTC + 00:00ただしHiveに変換するのはImpalaではなく、タイムスタンプをParquetに保存するときだけです。これはHiveのバグです:HIVE-12767 Parquetファイルからタイムスタンプを読むとき、Hiveは正しい値を得るために逆の調整を行いますが、Impalaはそうしません。

ImpalaのドキュメントのTIMESTAMP Data Typeページによると、-convert_legacy_hive_parquet_utc_timestamps=trueは、Hiveと同じ逆調整を実行しますが、それを使用するとパフォーマンスオーバーヘッドが発生します。

Impalaでタイムスタンプを書いて、それらをHiveで読み取った場合、HiveはデータがImpalaによって書き込まれたことに気づくため、調整が不要であるため、Impalaによって書き込まれたタイムスタンプがHiveに正しく表示されます。

+0

私はハイブの文脈で私のスパークコードでそれを有効にしました。ありがとうございました – Rob

+0

'convert_legacy_hive_parquet_utc_timestamps'はImpalaオプションですが、SparkやHiveで有効にすることはできません。 – Zoltan

+0

私はあなたがゾルタンを意味している、私はテーブルにデータをロードするためにハイブコンテキストを使用しています、私はインパラのメタデータをimapalaのデータをクエリするので、更新を反映するためにメタデータを無効にしています。あなたが私に与えたパラメータを有効にする可能性はありません。 – Rob

関連する問題