2017-09-15 6 views
0

HDFSディレクトリに配置された.txtファイルにハイブテーブルを作成しています。データにアクセスすると、最後のdatetime列(order_dtm)の出力がNULLとして表示されます。私は検索し、Googleで提供されている他のオプションを試してみましたが、これまでのところ何も働いていません。datetime列のNULL出力を示すハイブテーブル

ハイブクエリ:---タブ

>> hdfs dfs -cat /user/analyst/order/orders.txt | head -10 
17/09/15 23:46:37 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable 
5000001 1133938 06-01-2008 00:03:35 
5000002 1131278 06-01-2008 00:27:42 
5000003 1153459 06-01-2008 00:49:37 
5000004 1159099 06-01-2008 01:05:28 
5000005 1020687 06-01-2008 01:08:36 
5000006 1187459 06-01-2008 01:11:09 
5000007 1048773 06-01-2008 01:36:35 
5000008 1064002 06-01-2008 01:36:52 
5000009 1096744 06-01-2008 01:49:46 
5000010 1107526 06-01-2008 03:07:14 
cat: Unable to write to output stream. 
+0

**(1)** "は、NULLとして出力を示す" - NULLである単一の値を持つ単一のレコード?複数の行と1つの列にNULL値だけが含まれていますか?すべての列にNULL値だけが含まれていますか?区切り文字を確認するのではなく、**(4)**区切り文字は、区切り文字で区切られた区切り文字で区切られます。**(2)** ''/ t'' - スラッシュ(' \ t')スペースは、あなたのデータ(order_dtm)にスペースが含まれているので理にかなっていません。この特定のユースケースでは、それを処理する方法がありますが、それは悪い習慣です。 **(5)** ISOタイムスタンプ形式以外の形式 - 'yyyy-MM-dd HH:mm:ss [.S *]'はNULLを返す。 –

+0

返事をありがとう。 – Deepak

+0

@DuduMarkovitz ....返事をありがとう。 1)最後の列ORDER_DTMがNULL値を示していました。 2)それはタイプミスだった、私の元のクエリはバックスラッシュを持っていた。 3)私は推測していなかった、私はスプレッドシートでサンプルデータをテストしたのでスペースだったと知っていたが、私は問題を解決するために別のオプションを試していた4)理解した、5)理解する。離れてdownvote ...私は私の研究をした後に質問を投稿していた。 – Deepak

答えて

1
create external table orders 
(
    order_id int 
    ,cust_id  int 
    ,order_dtm string 
) 
    row format delimited 
    fields terminated by ' ' 
    location '/user/analyst/order' 
    tblproperties ('serialization.last.column.takes.rest'='true') 

; 

select * from orders 
; 

を-head

Create EXTERNAL table Orders(
    order_id int, 
    cust_id int, 
    order_dtm TIMESTAMP) 
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' LOCATION '/user/analyst/order/'; 

HDFSファイルを区切り

+-----------+----------+----------------------+ | order_id | cust_id | order_dtm | +-----------+----------+----------------------+ | 5000001 | 1133938 | 06-01-2008 00:03:35 | | 5000002 | 1131278 | 06-01-2008 00:27:42 | | 5000003 | 1153459 | 06-01-2008 00:49:37 | | 5000004 | 1159099 | 06-01-2008 01:05:28 | | 5000005 | 1020687 | 06-01-2008 01:08:36 | | 5000006 | 1187459 | 06-01-2008 01:11:09 | | 5000007 | 1048773 | 06-01-2008 01:36:35 | | 5000008 | 1064002 | 06-01-2008 01:36:52 | | 5000009 | 1096744 | 06-01-2008 01:49:46 | | 5000010 | 1107526 | 06-01-2008 03:07:14 | +-----------+----------+----------------------+ 

create view orders_v 
as 
select order_id 
     ,cust_id 
     ,from_unixtime(to_unix_timestamp(order_dtm,'MM-dd-yyyy HH:mm:ss')) as order_dtm 

from orders 
; 

select * from orders_v 
; 

+-----------+----------+----------------------+ 
| order_id | cust_id |  order_dtm  | 
+-----------+----------+----------------------+ 
| 5000001 | 1133938 | 2008-06-01 00:03:35 | 
| 5000002 | 1131278 | 2008-06-01 00:27:42 | 
| 5000003 | 1153459 | 2008-06-01 00:49:37 | 
| 5000004 | 1159099 | 2008-06-01 01:05:28 | 
| 5000005 | 1020687 | 2008-06-01 01:08:36 | 
| 5000006 | 1187459 | 2008-06-01 01:11:09 | 
| 5000007 | 1048773 | 2008-06-01 01:36:35 | 
| 5000008 | 1064002 | 2008-06-01 01:36:52 | 
| 5000009 | 1096744 | 2008-06-01 01:49:46 | 
| 5000010 | 1107526 | 2008-06-01 03:07:14 | 
+-----------+----------+----------------------+ 
+0

あなたのお返事ありがとうございます。答えを受け入れる。 – Deepak

関連する問題