I forgot to precise that I'm using Spark 2.1.0.

On 2017/11/10 16:08, Arnaud Wolf wrote:
Hi everyone.

I try to build a middleware that executes injection-safe dynamic SQL queries using Spark, with Cassandra as storage engine. Results of executed queries need to be stored into a newly created Cassandra table.

Spark SQL does not provide any feature for safe parameter binding, so I thought about using the JDBC thrift server and the JDBC interface.

Inserting data into an external table from hive is performed by running CREATE EXTERNAL TABLE <table_name>... STORED BY...

However, when trying to execute this statement through the thrift server, I always get the following error:

java.sql.SQLException: org.apache.spark.sql.catalyst.parser.ParseException:
Operation not allowed: STORED BY(line 1, pos 31)

After some web digging, I could find that the reason was that the thrift server was using Spark SQL and that Hive support is disabled by default on Spark SQL. Then the common recommendation is to manually create a SparkSession and use enableHiveSupport().

The problem is that I don't want to do that as I can't do safe query binding with Spark SQL. I want to use only the JDBC interface. Do you know if there is a way to enable Hive support at thrift server startup?

If there is no way, can somebody recommend a safe way for parameter binding?

Thank you for your consideration, and sorry for the long question.



---------------------------------------------------------------------
To unsubscribe e-mail: user-unsubscr...@spark.apache.org

Reply via email to