Nano Hash - криптовалюты, майнинг, программирование

Impala не может прочитать метку времени Dateless из файла Parquet

Impala v2.11.0+ (CDH v5.11.1+) не может считывать временные метки только со значением времени из файла Parquet.

create table TT2(t timestamp) STORED AS PARQUET;
insert into TT2 (t) values ("10:00:00");
select * from TT2;
+------+
| t    |
+------+
| NULL |
+------+
WARNINGS: Parquet file 'hdfs://localhost:20500/test-warehouse/tt2/714d741212df3180-cd4e670800000000_226739479_data.0.parq' column 't' contains an out of range timestamp. The valid date range is 1400-01-01..9999-12-31.`

https://issues.apache.org/jira/browse/IMPALA-5942

Несмотря на то, что оператор select возвращает значение null, диспетчер хранилища метаданных показывает, что столбец имеет значение

4714-12-30 10:00:00.0

То, что я ищу, - это альтернативный способ запроса этих данных, чтобы получить значение времени вместо того, чтобы вручную находить и преобразовывать все столбцы меток времени без даты в строку.

я пытался

SELECT cast(t as string) FROM TT2

SELECT date_part('hour', t) FROM TT2

SELECT from_timestamp(tms, "HH:mm:ss") FROM TT2

SELECT extract(tms, "hour") FROM TT2

SELECT extract(cast(tms as string), "hour") FROM TT2


Ответы:


1

Я считаю, что, поскольку вас интересует только часть времени, я бы предложил просто заменить часть даты какой-либо приемлемой датой, а затем impala предоставляет функции для извлечения времени из метки времени (все ваши дальнейшие запросы поверх данных могут использовать это ), поэтому я думаю, что одним из возможных решений является

1) Создайте временную таблицу, в которой столбец метки времени представляет собой строку

2) Теперь вы получите значение вроде «4714-12-30 10:00:00.0».

3) теперь вам нужно сделать следующее: а) использовать split_apart для извлечения 10:00:00.0 б) объединить извлеченную часть с «2018-11-12», чтобы теперь вы могли получать значения в формате «2018-11-12». 10:00:00.0"

4) Теперь результат предыдущего шага можно использовать как отметку времени.

5) Используйте select [имена столбцов col1,2,3,..],(cast (concat("2018-11-12",split_apart(col,delim,index)))as timestamp) для вставки данных в исходную таблицу из временной таблицы

17.01.2019
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..