次のディレクトリ構造を持つ 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データ型に変換するにはどうすればよいですか?