我有一个thrift服务器启动并运行,用户通过JDBC连接发送查询。我可以拦截和修改查询,然后将修改后的查询结果发送给用户吗?
例如 - 我希望用户能够发送查询
SELECT * FROM table_x WHERE pid="123";
将查询修改为
SELECT * FROM table_y WHERE pid="123";
并且应该返回第二个查询的结果。这应该对用户透明。
答案 0 :(得分:0)
我们认为SparkExecuteStatementOperation和SparkSession会添加我们的代码。我正在使用(尚未推出)基于某些外部策略的简单规则,我在传递之前将表的名称更改为SQL中的视图。虽然它有点hacky。
答案 1 :(得分:0)
在Spark Thrift Server中无法更改查询。您可以在Jdbc / odbc驱动程序之前使用其他方式更改查询。在复杂查询中需要对它进行多次操作。可以在简单查询中使用字符串修改仅更改表名很容易,但解析查询并修改复杂的查询并不容易。