2016-11-30 10 views
0

テーブルをハイブにインポートしています。だから、私はhadoopで外部テーブルを作成し、sqoopを使ってoracleからデータをインポートしました。しかし、問題は、すべての列がハイブの1つの列にあるデータを照会しているときです。Sqoopインポートの問題

表:

CREATE EXTERNAL TABLE `default.dba_cdr_head`(
    `BI_FILE_NAME` varchar(50), 
    `BI_FILE_ID` int, 
    `UPDDATE` TIMESTAMP) 
LOCATION 
    'hdfs:/tmp/dba_cdr_head'; 

Sqoop:

sqoop import \ 
--connect jdbc:oracle:thin:@172.16.XX.XX:15xx:CALLS \ 
--username username\ 
--password password \ 
--table CALLS.DBM_CDR_HEAD \ 
--columns "BI_FILE_NAME, BI_FILE_ID, UPDDATE" \ 
--target-dir /tmp/dba_cdr_head \ 
--hive-table default.dba_cdr_head 

データは以下のように次のようになります。

hive> select * from dba_cdr_head limit 5; 
OK 
CFT_SEP0801_20120724042610_20120724043808M,231893,  NULL NULL 
CFT_SEP1002_20120724051341_20120724052057M,232467,  NULL NULL 
CFT_SEP1002_20120724052057_20120724052817M,232613,  NULL NULL 
CFT_SEP0701_20120724054201_20120724055154M,232904,  NULL NULL 
CFT_SEP0601_20120724054812_20120724055853M,233042,  NULL NULL 
Time taken: 3.693 seconds, Fetched: 5 row(s) 

答えて

0

私はテーブルを変更したオプション「BY TERMINATED(ROWのFORMAT区切られたフィールドを作成し、 ')それが解決しました。

CREATE EXTERNAL TABLE `default.dba_cdr_head`(
    `BI_FILE_NAME` varchar(50), 
    `BI_FILE_ID` int, 
    `UPDDATE` TIMESTAMP) 
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' 
LOCATION 
    'hdfs:/tmp/dba_cdr_head';