我正在从Oracle到hdfs进行sqoop导入,并以镶木地板格式创建配置单元表。
我在Oracle表(mm/dd/yyyy
格式)中有一个日期字段,我需要在蜂巢中引入时间戳格式(yyyy-mm-dd hh24:mi:ss
)。
我在sqoop选择查询中使用了cast(xyz_date as Timestamp)
,但在Parquet文件中将其另存为Long类型。
我检查了配置单元表,并将NULL存储在配置域表xyz_date
中。
我不想将其存储为字符串。请帮忙。
system sqoop import -D mapDateToTimestamp=true \ --connect \ --username abc \ --password-file file:location \ --query "select X,Y,TO_DATE(to_char(XYZ,'MM/DD/YYYY'),'MM/DD/YYYY') from TABLE1 where $CONDITIONS" \ --split-by Y \ --target-dir /location \ --delete-target-dir \ -as-parquetfile \ --compress \ --compression-codec org.apache.hadoop.io.compress.SnappyCodec \ --map-column-java Y=Long
这是我的蜂巢表格式:
CREATE external TABLE IF NOT EXISTS abc ( X STRING, Y BIGINT, XYZ TIMESTAMP ) STORED AS PARQUET LOCATION '/location' TBLPROPERTIES ("parquet.compression"="SNAPPY");