Hive - конвертировать строку типа 'yyyy-MM-dd' в дату как тип данных 'yyyy-MM-dd - PullRequest
0 голосов
/ 04 сентября 2018

У меня есть внешняя таблица в кусте, которая имеет report_dt в качестве столбца и тип данных string и имеет значение типа 2018-09-02 2018-09-03

И я хочу создать управляемую таблицу из запроса, написанного для этой внешней таблицы, с report_dt_1 в качестве столбца с типом данных как date

Я просмотрел несколько тем и смог запросить, как

create table manag_newtable as select to_date(from_unixtime(unix_timestamp(report_dt,'yyyy-MM-dd'),'yyyy-MM-dd')) as report_dt_1 from exter_table;

, поэтому вышеуказанный запрос создает новую таблицу, но когда я desc manag_newtable, все равно этот report_dt_1 отображается как string datatype

1 Ответ

0 голосов
/ 04 сентября 2018

До Hive 2.1.0 TO_DATE возвращает строку.

https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF#LanguageManualUDF-DateFunctions

Возможно, вы хотите попробовать CAST.
https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Types#LanguageManualTypes-date

В противном случае, я предлагаю оставить столбец как время эпохи, потому что 1) с вашим текущим форматом вы теряете информацию о часовом поясе, хотя у вас ее никогда не было, поэтому вы предполагаете UTC? 2) Hive требует меньше времени десериализации для чисел, делая запросы быстрее. Если вам нужно отформатировать эпоху, сделайте это на уровне отчетов, а не на уровне хранения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...