Background:
I have some somewhat deeply nested types in a hive table that are causing
queries to error out when executing through JDBC. The same queries are
successful via the CLI and via hue beeswax clients. The JDBC error states

Number of levels of nesting supported for LazySimpleSerde is 7 Unable to
work with level 8. Use hive.serialization.extend.nesting.levels serde
property for tables using LazySimpleSerde.
at org.apache.hive.jdbc.Utils.verifySuccess(Utils.java:159)

I am therefore attempting to change my hive client configs to use a
different SerDe. What I am finding is that although I can generally set
hive config values, I am unable to modify the value of
hive.fetch.output.serde. My set statement for this is ignored.

Statement stmt = con.createStatement();
stmt.execute("set foo.bar=baz1");
stmt.execute("set
hive.fetch.output.serde=org.apache.hadoop.hive.serde2.DelimitedJSONSerDe");

ResultSet res = stmt.executeQuery("set -v");
while (res.next())
{
System.out.println(res.getString(1));
}


The results from 'set -v' show my value for foo.bar, but
hive.fetch.output.serde still shows
org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe.

Alternatively, I have tried
setting hive.serialization.extend.nesting.levels=true as the error
suggests. This config does show the new value in the 'set -v' results, but
for some reason does not resolve the nesting error when executing my query.
FWIW, I also tried setting these values via the jdbc url, but to no avail.

Any tips on a direction I can look in to work past this?
thanks!
-Adrian

Reply via email to