Я делаю импорт sqoop из оракула в hdfs и создаю таблицу кустов в формате паркета.
У меня есть поле даты в таблице Oracle (mm/dd/yyyy
формат), которое мне нужно перенести в формате Timestamp (yyyy-mm-dd hh24:mi:ss
) в улье.
Я использовал cast(xyz_date as Timestamp)
в запросе выбора sqoop, но он сохраняется как тип Long в файле Parquet.
Я проверил таблицу кустов, и 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");