powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / NoSQL, Big Data [игнор отключен] [закрыт для гостей] / Из Date (Oracle) в Timestamp (Hive) с обработкой Daylight Saving Time (DST)
2 сообщений из 2, страница 1 из 1
Из Date (Oracle) в Timestamp (Hive) с обработкой Daylight Saving Time (DST)
    #39603299
Jack Carver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коллеги, добрый день!
Подскажите, кто как решал подобную проблему.

Дано:
1) Перекачивается таблица со столбцами типа DATE из Oracle в Hive с помощью Sqoop.
2) На стороне Oracle временная зона - "Asia/Yekaterinburg".
3) На стороне Hadoop временная зона - "Asia/Yekaterinburg".
4) В данных есть значение '1983-04-01 00:00:00'. Это значение для временной зоны Екатеринбурга является моментом перехода на летнее время (DST).
т.е. запросы в Oracle:
Код: sql
1.
select to_date('1983-04-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS') from dual


вернет 1983-04-01
Код: sql
1.
select timestamp '1983-04-01 00:00:00 Asia/Yekaterinburg' from dual


вернет ошибку "ORA-01878: в кодировке или интервале указанное поле не найдено"
5) Для хранения на стороне Hive используется parquet-таблица. В которой нет типа Date, можно использовать только Timestamp.
6) При записи данных mapreduce-джобом Sqoop'а происходит преобразование извлеченной из Оракла строки "1983-04-01 00:00:00" в timestamp с временной зоной кластера (Екатеринбург) с автоматическим смещением. Т.е. в parquet-таблице будет храниться дата вида "1983-04-01 01 :00:00"
7) Пользователям, которые работают с данными в parquet-таблице этот добавленный час НЕ НУЖЕН !!! Они привыкли работать с датами БЕЗ ТАЙМЗОН в Оракле.

Вопрос: как быть?


Пока решил проблему следующим образом:
Перевел кластер на временную зону UTC, в которой нет переходов DST.
И все входящие данные из Екатеринбурга вставляю без изменений (это подавляющее большинство) как будто они в UTC зоне.
...
Рейтинг: 0 / 0
Из Date (Oracle) в Timestamp (Hive) с обработкой Daylight Saving Time (DST)
    #39603551
Фотография Apex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Jack CarverКоллеги, добрый день!
Подскажите, кто как решал подобную проблему.

Дано:
1) Перекачивается таблица со столбцами типа DATE из Oracle в Hive с помощью Sqoop.
2) На стороне Oracle временная зона - "Asia/Yekaterinburg".
3) На стороне Hadoop временная зона - "Asia/Yekaterinburg".
4) В данных есть значение '1983-04-01 00:00:00'. Это значение для временной зоны Екатеринбурга является моментом перехода на летнее время (DST).
т.е. запросы в Oracle:
Код: sql
1.
select to_date('1983-04-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS') from dual


вернет 1983-04-01
Код: sql
1.
select timestamp '1983-04-01 00:00:00 Asia/Yekaterinburg' from dual


вернет ошибку "ORA-01878: в кодировке или интервале указанное поле не найдено"
5) Для хранения на стороне Hive используется parquet-таблица. В которой нет типа Date, можно использовать только Timestamp.
6) При записи данных mapreduce-джобом Sqoop'а происходит преобразование извлеченной из Оракла строки "1983-04-01 00:00:00" в timestamp с временной зоной кластера (Екатеринбург) с автоматическим смещением. Т.е. в parquet-таблице будет храниться дата вида "1983-04-01 01 :00:00"
7) Пользователям, которые работают с данными в parquet-таблице этот добавленный час НЕ НУЖЕН !!! Они привыкли работать с датами БЕЗ ТАЙМЗОН в Оракле.

Вопрос: как быть?


Пока решил проблему следующим образом:
Перевел кластер на временную зону UTC, в которой нет переходов DST.
И все входящие данные из Екатеринбурга вставляю без изменений (это подавляющее большинство) как будто они в UTC зоне.

Так пробовал?
Код: java
1.
-D mapred.child.java.opts=" -Duser.timezone=UTC"
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / NoSQL, Big Data [игнор отключен] [закрыт для гостей] / Из Date (Oracle) в Timestamp (Hive) с обработкой Daylight Saving Time (DST)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]