Invest-currency.ru

Как обезопасить себя в кризис?
2 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Unix timestamp hive

Функции unix_timestamp и from_unixtime Hive

У меня сложилось впечатление, что функции unix_timestamp и from_unixtime Hive являются ‘reverse’ друг друга.

Когда я пытаюсь преобразовать строку timestamp в секунды в Hive:

Я получаю 1418176800.

Когда я пытаюсь преобразовать 1418176800 в timestamp строку:

Я получаю 10-Dec-14 10.00.00.120 AM, что явно не равно оригиналу.

Может кто-нибудь объяснить, что происходит? Спасибо.

2 Ответа

Из руководства по языку:

Преобразование временной строки с заданным шаблоном в отметку времени Unix (в секундах) Результат этой функции находится в секундах.

Ваш результат изменяется с миллисекундной частью даты, но функции unix поддерживают только секунды. Например:

SELECT unix_timestamp(’10-Jun-15 10.00.00 AM’, ‘dd-MMM-yy hh.mm.ss a’);

SELECT from_unixtime(1433930400, ‘dd-MMM-yy hh.mm.ss a’);

10-Jun-15 10.00.00 AM

Не используйте from unix_timestamp, как это было во втором запросе. Кроме того, ваш оператор имеет форматирование в нем, что дает результат, где DEC используется вместо 12. Смотрите dd-MMM-yy. Не указывайте формат, и он должен работать. Смотрите примеры ниже.

Однако вы правы, что from_unixtime() и unix_timestamp() используются для преобразования назад и вперед из строки времени.

результаты в «1428566666»

результаты в «2015-04-09 03:04:26»

Похожие вопросы:

Я пытаюсь сделать что-то вроде следующего в Hive набор TODAY=2013-11-04; //this работает SET TODAY = to_date(from_unixtime (unix_timestamp())); //this-нет.. набор TODAY; TODAY=to_date (from_unixtime.

Например, ниже hive скрипт select from_unixtime(unix_timestamp(’30-Apr-50′, ‘dd-MMM-yy’), ‘yyyy-MM-dd’) as date1, from_unixtime(unix_timestamp(’30-Apr-45′, ‘dd-MMM-yy’), ‘yyyy-MM-dd’) as date2.

Я хочу сохранить current_day-1 в переменной в Hive . Я знаю, что уже есть предыдущие темы по этой теме, но представленные там решения сначала рекомендуют определить переменную вне hive в среде.

Верно ли, что Hive и SparkSQL не поддерживают тип данных datetime ? Из моего чтения ссылок, они, кажется, поддерживают только date и timestamp . Первый не является компонентом времени (например.

Когда я запускаю код select unix_timestamp(‘2015-07-22 17:34:18’) , hive возвращает 1437554058 ; Когда я запускаю код select from_unixtime(1437554058, ‘yyyyMMdd’) , hive возвращает ‘20150722’ Но.

Каков самый быстрый способ выбора строк с полем больше определенной даты? WHERE date > FROM_UNIXTIME(12345) или WHERE UNIX_TIMESTAMP(date) > 12345 или WHERE date > ‘2011-05-01 09:00:00’

Я пытаюсь найти дату прошлой субботы в HIVE в YYYY-MM-DD формате, используя: SET DATE_DM2=date_sub(from_unixtime(unix_timestamp(),’yyyy-MM-dd’),cast(((from_unixtime(unix_timestamp(), ‘u’) % 7)+1) as.

Как Сообщение, Как выбрать текущую дату в Hive SQL , чтобы получить текущую дату в Hive, unix_timestamp может быть использован. Но я пытался select unix_timestamp(); и просто, unix_timestamp(); оба.

Я пытаюсь написать запрос Hive, который добавит 6 часов к значению timestamp, а затем сравните его с другими метками времени. Метод, который я использовал, заключается в преобразовании timestamp с.

Я использую запрос для создания timestamp из фиктивной таблицы под названием dual. Но дата, возвращенная из таблицы, кажется недействительной. select String(max(max_lid_date)) as.

How to Subtract TIMESTAMP-DATE-TIME in HIVE

We may want to subtract two timestamps in order to find out the difference between occurence of two events. This is a very common operation which we perform on any TIMESTAMP or DATE or TIME data type. Now the question is how to find out the difference or subtract two timestamp ? In HIVE we can directly subtract two timestamp columns and get the result. Let’s see this with an example:
TIMESTAMP 1: 2017-09-22 17:22:38
TIMESTAMP 2: 2017-09-12 14:53:19

Now I want to find the difference between these 2 timestamp values. I can directly subtract it.

Читать еще:  Основные особенности архитектуры современных пк

select CAST(‘2017-09-22 17:22:38’ as timestamp) – CAST(‘2017-09-12 14:53:19’ as timestamp );
hive> select CAST(‘2017-09-22 17:22:38’ as timestamp) — CAST(‘2017-09-12 14:53:19’ as timestamp );
OK
10 02:29:19.000000000

The OUTPUT is in format “interval_day_time”.
Now if you want the output in SECONDS rather than DAY HOUR:MINUTES:SECOND then you can extract the values and convert it individually to SECONDS.
select day(CAST(‘2017-09-22 17:22:38’ as timestamp) – CAST(‘2017-09-12 14:53:19’ as timestamp ));
select hour(CAST(‘2017-09-22 17:22:38’ as timestamp) – CAST(‘2017-09-12 14:53:19’ as timestamp ));
select minute(CAST(‘2017-09-22 17:22:38’ as timestamp) – CAST(‘2017-09-12 14:53:19’ as timestamp ));
select second(CAST(‘2017-09-22 17:22:38’ as timestamp) – CAST(‘2017-09-12 14:53:19’ as timestamp ));

So 10 DAYS will become 10*24*60*60 = 864000
02 HOUR will become 02*60*60 = 7200
29 MINS will become 29*60 = 1740
19 SECS will remain 19 = 19
So TOTAL SECONDS: 872959 sec

Similarly we may want to subtract two DATEs and find the difference. There are functions available in HIVE to find difference between two dates however we can follow the same method to find the difference too. Let’s see how we can use DATEDIFF function to get the output:

hive> select datediff(to_date(‘2017-09-22’), to_date(‘2017-09-12’));
OK
10
The retun type is “INT” and it shows the difference in number of DAYS. So in this case output is 10 which means 10 Days difference between 2 dates.
We can use the other method too to directly subtract the dates and output will be in format “interval_day_time”.

hive> select CAST(‘2017-09-22’ as DATE) — CAST(‘2017-09-12’ as DATE );
OK
10 00:00:00.000000000
Now if you want the output in SECONDS then just convert DAY into seconds.
So 10 DAYS will become 10*24*60*60 = 864000

Similarly we want to subtract two TIMEs and find the difference.In this we cannot directly subtract as there is no TIME data type in HIVE. There is DATE and there is TIMESTAMP however presently we don’t have any explicit TIME data type in HIVE. So to subtract 2 TIME (present as String in HIVE) we will use unix_timestamp function. The function return type is “BIGINT” and is the difference between TIMESTAMP and UNIX Epoch.

hive> select unix_timestamp(’17:22:38′,’HH:mm:ss’) — unix_timestamp(’14:53:19′,’HH:mm:ss’);
OK
8959
So there is 8959 seconds difference between these two TIME slots.

Hope the above examples helped you in calculating difference between 2 TIMESTAMPs or 2 DATEs or even 2 TIMEs value.

Команда date в Linux

Главное свойство утилит GNU/Linux — делать что-то одно, но эффективно. Яркий пример — команда date Linux, работающая с датой и временем. С её помощью можно извлекать любую дату в разнообразном формате, в том числе и рассчитывать прошлое и будущее время. Привилегированные пользователи могут перезаписывать системное время, используя её.

Читать еще:  Linux mbr to gpt

Утилита предустановлена во всех дистрибутивах GNU/Linux. В этой статье будут рассмотрены возможности date и способы применения этой команды.

Синтаксис команды date

Программа может выполнятся от имени обычного пользователя. Стандартный синтаксис команды (квадратные скобки обозначают необязательное наличие):

date [ ОПЦИИ ] . [ +ФОРМАТ ]

Ниже представлена таблица с часто применяемыми опциями для date.

Аргумент ФОРМАТ отвечает за форматирование вывода даты. Для его указания необходимо поставить знак «+» и написать нужную маску. Наиболее популярные форматы:

Примеры использования date

Введем команду без параметров.

Будет отображена текущая дата и время в соответствии с настройками локали системы.

Команда date без параметров по умолчанию применяет маску %a %b %d %X %Z. Поскольку все форматы должны быть переданы как один параметр (из-за принципа обработки данных командным интерпретатором Bash), пробелы между ними необходимо экранировать обратным слэшем () или взять в кавычки.

Особое внимание следует уделить параметру -d (—date). Его функциональность не слишком очевидна, но при этом наиболее обширна.

Пример 1. Вычисление даты по числу секунд, прошедших с 1 января 1970 года.

Пример 2. Вычисление даты и времени следующего понедельника при указании часового пояса Нью-Йорка в 03:00.

date —date=’TZ=»America/New_York» 03:00 next mon’

Обратите внимание: указывать название дня недели или месяца можно в любом регистре, в короткой или длинной форме. Параметры next и last обозначают следующий и прошедший, соответственно, ближайшие дни недели.

Пример 3. Если текущий день месяца — последний, сформировать отчет о занятости дискового пространства корневого и домашнего каталога в файл report.

#!/bin/bash
if [[ $(date —date=’next day’ +%d) = ’01’ ]]; then
df -h / /home > report

Такой скрипт можно использовать для автоматизации работы с помощью демона crontab или anacron.

Выводы

Команда date Linux является эффективным инструментом работы с датой и временем, с широкой возможностью их расчёта для прошедших или будущих показателей. Также она применяется в написании сценариев в командном интерпретаторе Bash.

Thomas Henson

Hive is one of the leading SQL engine running on Hadoop. Hive has had a long relationship with Hadoop from the start to support SQL like syntax. Even though Hive supports SQL like syntax there are some differences the in the Hive data types vs. SQL data types. Let’s walk through the 13 different Hive data types.

Traditional SQL vs. SQL on Hadoop

Why are we switching to SQL on Hadoop vs. traditional relational database? It’s all about the data…well particularly the data growth. In the past 2 years we’ve doubled the total data in human history and we will do the same in the next 2 years. Most of all that data being generated is unstructured data. Relational database depend on the schema being in place before storing the data vs. Hadoop defining the data only before it’s read. Read more about Schema on Read vs. Schema on Write.

Traditional relational database are really fast at processing data, but start to break down as data scales. Ever tried to run a complex join on a 10 TB table? Not fun on a relational database! Hive was built to run joins on TBs and PBs of data in a table. Remember our data growth is exploding and we are going to need solutions that will scale. Hadoop was built to help scale data and Hive is the SQL engine that runs on top of Hadoop.

Читать еще:  Многопроцессорная архитектура пк

Why do we have data types in Hive

Traditional SQL or HiveQL requires data types be defined on each column. You have probably wondered why do we declare a data type? The two reasons for declaring the data type is storage and analysis. First the storage allows for Hive to more efficiently allocate the storage for the data. There is a huge difference between storing the number 1 vs. a precision number with a million decimal places. Developers have the option to allocate only the storage needed. The second reason is allowing for analysis of the columns. Without data types 1 + 1 wouldn’t be 2 when the data types were strings. Every developer has run across in all programming language where they have had to convert from string to integer. Hive is no different declare the data types to prevent errors when analyzing data.

Data Types in Hive

In Hive data types are categorized as either complex or primitive. The primitive data types are the largest and are typically broken into sub categories. If you familiar with SQL you will recognize the primitive data types as datetime, numeric, string, and boolean. The sub categories in Hive are officially Hive are Date Time, Numeric, String, and Misc. The complex data types aren’t as complex with the categories include Struct, Array, and Map. Let’s break the categories and sub categories down with examples.

Example Data

Before we learn the different data types in Hive let’s look at the sample data set we will use. For the example below we will refer the sample data set from NASA’s public record. The sample set is a list of all recorded Meteorite landings.

NASA Meteorite Landings Data Set

Primitive Hive Data Types

Primitive data types are use in most programming languages as base type for data. Think about the primitives in the Java Programming language like integer or float. These are the basic building blocks every programmer learns after building out their first hello world application. Hive is no different, in fact since Hive is written in Java and inherits those same data types for Hive.

Numeric Hive Data Types

The numeric data types is the largest sub category because well numbers are really important in calculations. Also numbers tend to have the most variable storage needs.

TinyINT

TinyINT – smallest numeric type only covering a hundred.

Ссылка на основную публикацию
ВсеИнструменты 220 Вольт
Adblock
detector