拦截并修改传入的SQL查询到Spark Thrift Server

时间:2018-02-12 16:54:31

标签: apache-spark spark-thriftserver

我有一个thrift服务器启动并运行,用户通过JDBC连接发送查询。我可以拦截和修改查询,然后将修改后的查询结果发送给用户吗?

例如 - 我希望用户能够发送查询

SELECT * FROM table_x WHERE pid="123";

将查询修改为

SELECT * FROM table_y WHERE pid="123";

并且应该返回第二个查询的结果。这应该对用户透明。

2 个答案:

答案 0 :(得分:0)

我们认为SparkExecuteStatementOperation和SparkSession会添加我们的代码。我正在使用(尚未推出)基于某些外部策略的简单规则,我在传递之前将表的名称更改为SQL中的视图。虽然它有点hacky。

答案 1 :(得分:0)

在Spark Thrift Server中无法更改查询。您可以在Jdbc / odbc驱动程序之前使用其他方式更改查询。在复杂查询中需要对它进行多次操作。可以在简单查询中使用字符串修改仅更改表名很容易,但解析查询并修改复杂的查询并不容易。