0

次のディレクトリ構造を持つ HDFS に保存されたテキスト ファイルにデータがあります。

/exported/year/07/month/hour/SEARCHES/
/exported/2014/07/01/00/SEARCHES/part-m-00000
                                 part-m-00001
/exported/2014/07/01/02/SEARCHES/part-m-00000
                                 part-m-00001
                                 part-m-00003
.
.
.
.
/exported/2014/08/01/09/SEARCHES/part-m-00005

したがって、次のクエリを使用して impala に外部テーブルを作成しました。

CREATE EXTERNAL TABLE search
  (time_stamp TIMESTAMP, url STRING, domain STRING, ............ keyword STRING)
PARTITIONED BY (year INT, month INT, day INT, hour INT)
  row format delimited fields terminated by '\t';

そして、データを次のようにロードしました:

ALTER TABLE search_mmx ADD PARTITION (year=2014, month=08, day=${d}, hour=${h})
LOCATION '/exported/2014/08/${d}/${h}/SEARCHES/';

利用可能なすべての曜日と時間。正常にロードされました。行数を数えることでこれを確認しました。

しかし、試してみると、select * from search limit 10;「列の変換中にエラーが発生しました: 0 TO TIMESTAMP (データは: 1406965816)」というエラーが表示されました。

time_stamp の元の値は Unix タイムスタンプ形式です。UNIXタイムスタンプからImpala TIMESTAMPデータ型に変換するにはどうすればよいですか?

4

1 に答える 1

0

TIMESTAMP データ型のドキュメントから:

整数値または浮動小数点値 N を TIMESTAMP にキャストして、エポック日付 (1970 年 1 月 1 日) の開始から N 秒経過した値を生成できます

また:

注: Impala 1.3 以降では、FROM_UNIXTIME() および UNIX_TIMESTAMP()関数を使用すると、要素の順序、文字プレースホルダーの繰り返し、および区切り文字の柔軟性が向上し、より広い範囲のフォーマット文字列を使用できます。詳細については、日付と時刻の関数を参照してください。

于 2014-08-28T20:26:51.647 に答える