2016-09-29 2 views
0

У меня есть база данных, которая имеет вид, созданный от других представлений, которые создаются от других взглядов (инженер данные построен взгляды не меня)Impala анализ исключение из представлений

В улье я могу это сделать, но его медленно, поэтому я хочу использовать Impala

select * from table limit 5; 

в Impala я получаю ошибку, попытался метаданные ТЕРЯЮТСЯ и обновить без удачи.

"ERROR: AnalysisException: No matching function with signature: lower(BIGINT)." 

какая причина может случиться? Никогда раньше не видел этого типа ошибки. Есть ли способ сделать это рекурсивно?

show create table; 

ответ

0

Начнем с того, имейте в виду, что улей и Impala являются различные решения, с различными анализаторами SQL, поддерживая определенный набор функций и возможностей. Синтаксис, действительный в Hive, может быть недействительным в Impala. Некоторые табличные форматы, определенные с помощью Hive, могут не поддерживаться Impala (например, ORC или Parquet с колонкой BINARY).

В данном конкретном случае Hive documentation, как представляется, соответствует Impala documentation для функции lower()(предостережение: проверить, какие версии вы используете).

Но есть большой улов: lower() берет строку и производит строку. Это не функция числа. Это пахнет грубой ошибкой, например, запутанной lower() - конвертировать текст в нижний регистр - и floor() - получить целочисленное значение, равное или меньшее десятичному значению.

Проконсультируйтесь с вашим так называемым Data Engineer, что он/она пытался сделать, и убедитесь, что просмотры были надлежащим образом проверены. (или прошли надлежащую проверку после внесения поправки). Hive явно применяет некоторые неявные преобразования типов, которые позволяют запускать запросы, даже если это не имеет смысла и приводит к ошибкам.

+0

Да, мне нужно было просто следовать инструкциям create table на нескольких уровнях и описывать таблицы, тогда, наконец, я нашел инструкцию с более низким (тип bigint). Интересно, есть ли более простой способ отладки? – user295944