Когда вы создаете представление, оно принимает фактическое значение переменной.
Существует два обходных пути:
- Создайте реальную таблицу, в которой вы будете хранить / обновлять параметр.
CREATE VIEW test AS SELECT * FROM customers JOIN id_table ON customer_id = id_tableid
- Передача параметра в представление с помощью пользовательской функции (UDF). Возможно, вам понадобится установить и получить два UDF. Set UDF будет записывать UDF в HDFS, а Get UDF будет читать переменную из HDFS.
Два вышеупомянутых обходных пути работают, но не идеально. Я предлагаю использовать Hive для создания параметризованного представления. Вы можете создать GenericUDF, с помощью которого вы можете получить доступ к конфигурации улья, прочитать переменную и выполнить фильтрацию. Вы не можете использовать это для Импалы.
SELECT Generic_UDF(array(customer_id)) FROM customers
GenericUDFs имеет метод configure, который вы можете использовать для чтения переменной hive:
public void configure(MapredContext mapredContext) {
String name = mapredContext.getJobConf().get("name");
}