Hadoop SQL требует имя таблицы, чтобы просто получить время.Как получить стол? - PullRequest
0 голосов
/ 16 апреля 2019

Некоторым производным Hive (например, Hadoop) требуется имя таблицы для запроса SQL, чтобы получить текущее время:

    SELECT UNIX_TIMESTAMP() FROM ANYTABLE

Имя таблицы не имеет значения и является излишним, но является обязательным (другие диалекты Hive не допускают предложение FROM, а некоторым не важно, есть ли предложение FROM или нет).

Ошибка, которую я получаю от Cloudera Hadoop, если не включено предложение FROM: [Cloudera] [Hardy] (80) Ошибка синтаксического или семантического анализа, генерируемая на сервере во время выполнения запроса. Сообщение об ошибке от сервера: Ошибка при обработке оператора: СБОЙ: ParseException строка 1:23 не соответствует входу '' ожидающий ОТ ') в предложении из

Если подойдет любая таблица, ее можно получить в «ШОУ ТАБЛИЦАХ». Но для этого нужен еще один запрос, которого я пытаюсь избежать.

Есть ли общее / системное имя таблицы, которое можно использовать для этого? Или другой способ запросить время без известного имени таблицы?

(Обнаруженные мной реализации Hive, которым требуется предложение FROM, - это Cloudera Hadoop и Horton. Presto и Athena выдают ошибку, если вы используете предложение FROM. Другие проверенные реализации Hive не заботятся о наличии предложения FROM нет.)

1 Ответ

0 голосов
/ 16 апреля 2019

Hortonworks Hive позволяет выбирать без предложения FROM.

 0: jdbc:hive2://localhost> SELECT UNIX_TIMESTAMP();
+-------------+--+
|     _c0     |
+-------------+--+
| 1555423112  |
+-------------+--+
1 row selected (0.204 seconds)

0: jdbc:hive2://localhost> SELECT'foo bar';
+----------+--+
|   _c0    |
+----------+--+
| foo bar  |
+----------+--+
1 row selected (0.855 seconds)

Если вы все еще получаете ошибку при попытке выбрать метку времени, опубликуйте ошибку и версию Hive.

...