あなたは寄木細工のRDBMSデータを変換するために、Sqoopを使用している場合は、DATE、DATETIME、またはTIMESTAMP列から任意の結果の値の解釈には注意してください。基礎となる値は、寄木張りINT64型として表され、ImpalaテーブルのBIGINTとして表されます。 Parquetの値はミリ秒単位の時間を表し、ImpalaはBIGINTを秒単位の時間として解釈します。したがって、Sqoopからこの方法でインポートされたParquetテーブルにBIGINTカラムがある場合は、TIMESTAMPタイプとして解釈するときに値を1000で割ります。
現在、アブロテーブルは、TIMESTAMP列を含めることはできません。回避策として、日付と時刻の値をAvroテーブルに格納する必要がある場合は、値のSTRING表現を使用したり、UNIX_TIMESTAMP()関数を使用して値をBIGINTに変換したり、 EXTRACT()関数
このようなHiveクエリを使用して、目的のTIMESTAMP形式で結果を取得することもできます。
FROM_UNIXTIME(CAST(SUBSTR(timestamp_column, 1,10) AS INT)) AS timestamp_column;
他の回避策は、タイムスタンプ形式に列をキャストすることができますsqoopコマンドで--query
を使用してデータをインポートすることです。
例
--query 'SELECT CAST (INSERTION_DATE AS TIMESTAMP) FROM tablename WHERE $CONDITIONS'
あなたのSELECTクエリが少し長くなる場合は、コマンドライン呼び出しの長さを短くするために、構成ファイルを使用することができます。ここでは、reference
ですStackOverflowは、問題に関するアイデアや提案を収集するための適切なサイトではありません。問題を具体的な問題で再提示して、これまでに試したこととプロセスの中でどこにいらっしゃったのかを示してください。 –
[Hadoop - テーブル作成時の日付の書式設定]の可能な複製(http://stackoverflow.com/questions/41400094/hadoop-formatting-dates-when-creating-tables) – Pushkr