sqoop --as-parquetfile:导入文件

时间:2015-06-22 20:12:24

标签: hadoop sqoop

我正在使用Cloudera的QuckStart CDH5.4 VMware镜像。它的sqoop为1.4.5。

我从一个非常简单的Oracle数据库10g企业版10.2.0.4.0版 - 64位生产表导入:

create table SIMPLETBL (
        id NUMBER(38,0),
        firstname varchar2(64),
        lastname varchar2(64),
        entry date
);

使用此sqoop调用导入HDFS中的暂存目录:

#!/bin/bash
sqoop  import \
    --verbose \
    --username theuser --password thepassword \
    --connect jdbc:oracle:thin:@x.y.z.x:1565:sidd \
    --table THEUSER.SIMPLETBL \
    --target-dir /archive/xxx/stage_pk \
    -m 1 --as-parquetfile

HDFS目录/archive/xxx/stage_pksqoop创建,单个文件最终在其中。我把它搬到了镶木桌子的目录:

hdfs dfs -mv /archive/xxx/stage_pk/\*  /archive/xxx/pktbl

impala-shell告诉我关于我的拼花文件表:

[quickstart.cloudera:21000] > select * from pktbl limit 10;
Query: select * from pktbl limit 10
ERROR: File 'hdfs://quickstart.cloudera:8020/archive/xxx/pktbl/afd5eba5-b1e9-462b-9e23-3df6dcdfab22.parquet' 
has an incompatible type with the table schema for column 'ID'.  
Expected type: INT32.  Actual type: BYTE_ARRAY

两列firstnamelastname似乎正确进入Parquet表,但DATE格式列没有:

[quickstart.cloudera:21000] > select entry from pktbl limit 10;
Query: select entry from pktbl limit 10
ERROR: File 'hdfs://quickstart.cloudera:8020/archive/xxx/pktbl/afd5eba5-b1e9-462b-9e23-3df6dcdfab22.parquet' 
has an incompatible type with the table schema for column 'ENTRY'.
Expected type: INT96.  Actual type: INT64

sqoop创建impala可以理解的Parquet文件是否有一些技巧?似乎sqoop 1.4.5获取除“string”之外的每种数据类型。

0 个答案:

没有答案