Проблема даты и времени при извлечении данных из оракула - PullRequest
1 голос
/ 24 апреля 2019

Я делаю импорт 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"); 
...