Spark to_date генерирует странный 5-значный год - PullRequest
0 голосов
/ 23 февраля 2019

Я выполнил следующее предложение выбора для таблицы HIVE в редакторе HUE и получил результат ниже.

SELECT statestartdate,
to_date(from_unixtime(statestartdate, 'yyyy-MM-dd HH:mm:ss')) AS statestartdatestr
FROM processmining.InstanceUserPerformance limit 100

РЕЗУЛЬТАТ

statestartdate  statestartdatestr
1363782909107   45186-07-24

ВОПРОС В области года поля statestartdatestr я получаю 45186 для некоторого странногопричина !?Кто-нибудь может указать, почему, пожалуйста?Thnx.

1 Ответ

0 голосов
/ 23 февраля 2019

Похоже, ваш statestartdate - это количество миллисекунд с начала Unix.Функция from_unixtime берет количество секунд из эпохи Unix, согласно Cloudera docs .

Следовательно, если вы хотите преобразовать statestartdate всекунды и тип данных даты, вы можете попробовать что-то вроде этого ...

SELECT statestartdate,
  to_date(
    from_unixtime(
      floor(statestartdate / 1000),
      'yyyy-MM-dd HH:mm:ss'
    )
  ) AS statestartdatestr
FROM processmining.InstanceUserPerformance LIMIT 100
...