3.2. Hive Behavioral Changes

HIVE-7397 Hive has changed the following default settings:

hive.fetch.task.conversion - from 'minimal' to 'more'hive.fetch.task.conversion.threshold - from '-1' to '1073741824' (1 GiB)

For example, queries such as:

select * from foo_table limit 1;

which would previously have executed without a MapReduce stage to now require a MapReduce stage. The change to these settings allows more types of queries to be evaluated locally, including queries with "where" clauses. The threshold is applied to the input size of the query (raw table size). Because 'more' allows filtered queries, it's prudent to set a limit on the input size.

HIVE-6432: Hive 0.14 removes all org.apache.hcatalog.* classes in favor of org.apache.hive.hcatalog.* classes.

The following previously deprecated features were also removed in this release as part of this change:

  • HdfsAuthorizationProvider - the Hive StorageBasedAuthorizationProvider replaces it.

  • HBaseHCatStorageHandler - Hive's native HBaseStorageHandler is now directly usable from HCatalog.

HIVE-6455 If you store Hive data in a columnar format, such as ORC, verify that the hive.optimize.sort.dynamic.partition property is set to true. It was the default value for Hive 0.13.x, but is now disabled by default in Hive 0.14.x. Enabling dynamic partitions improves Hive performance when using columnar formats.

<property>     
  <name>hive.optimize.sort.dynamic.partition</name>    
  <value>true</value> 
</property>

(HIVE-5940, HIVE-6252) Added SHOW GRANT and SHOW ROLE GRANT. Users will be able to list only their own privileges on a table/role unless they are are in an admin role.For grant/revoke statements, if a user is granted a privilege WITH GRANT OPTION on a table or view, then the user can also grant that privilege other users.

HIVE-6972 The JDBC URI for HiveServer2 has the form:

jdbc:hive2://<host1>:<port1>,<host2>:<port2>/dbName;sess_var_list?hive_conf_list#hive_var_list

Ideally, sess_var_list is supposed to be used to pass parameters that will be used within the JDBC Driver. However, some of the http mode parameters were being passed in the hive_conf_list which is fixed now (in a backward-compatible way).

Additionally, JDBC Driver has a naming convention for the parameters in the JDBC URI which were not followed to the sasl.qop parameter. It is renamed it in a backward compatible way.

  •  HTTP Mode parameters have changed. As you can see in the following examples, hive.server2.transport.mode has been renamed to transportMode, hive.server2.thrift.http.path has been renamed to httpPath and both have been moved from hive_conf_list to sess_var_list.

    • Old example URI: jdbc:hive2://<host>:<port>/<db>;user=<username>;password=<password>?hive.server2.transport.mode=http;hive.server2.thrift.http.path=<http_endpoint>

    • New example URI: jdbc:hive2://<host>:<port>/<db>;user=<username>;password=<password>;transportMode=http;httpPath=<http_endpoint>?hive.server2.logging.operation.enabled=false

  • Sasl qop renamed to saslQop:

    • Old example URI: jdbc:hive2://<host>:<port>/<db>;principal=<hiveserver2_kerberos_principal>;sasl.qop=<qop_value>

    • New example URI: jdbc:hive2://<host>:<port>/<db>;principal=<hiveserver2_kerberos_principal>;saslQop=<qop_value>

All changes are backward-compatible and print a deprecation warning message like the following:

0: jdbc:hive2://localhost:10007> !connect 

jdbc:hive2://localhost:10007/;sasl.qop=auth?hive.server2.transport.mode=h

ttp;hive.server2.thrift.http.path=cliservice user user 

org.apache.hive.jdbc.HiveDriver

Connecting to 

jdbc:hive2://localhost:10007/;sasl.qop=auth?hive.server2.transport.mode=h

ttp;hive.server2.thrift.http.path=cliservice

14/10/07 16:22:24 INFO jdbc.Utils: Supplied authorities: localhost:10007

14/10/07 16:22:24 WARN jdbc.Utils: ***** JDBC param deprecation *****

14/10/07 16:22:24 WARN jdbc.Utils: The use of sasl.qop is deprecated.

14/10/07 16:22:24 WARN jdbc.Utils: Please use saslQop like so: 

jdbc:hive2://<host>:<port>/dbName;saslQop=<qop_value>

14/10/07 16:22:24 WARN jdbc.Utils: ***** JDBC param deprecation *****

14/10/07 16:22:24 WARN jdbc.Utils: The use of hive.server2.transport.mode 

is deprecated.

14/10/07 16:22:24 WARN jdbc.Utils: Please use transportMode like so: 

jdbc:hive2://<host>:<port>/dbName;transportMode=<transport_mode_value>

14/10/07 16:22:24 WARN jdbc.Utils: ***** JDBC param deprecation *****

14/10/07 16:22:24 WARN jdbc.Utils: The use of 

hive.server2.thrift.http.path is deprecated.

14/10/07 16:22:24 WARN jdbc.Utils: Please use httpPath like so: 

jdbc:hive2://<host>:<port>/dbName;httpPath=<http_path_value>

Connected to: Apache Hive (version 0.14.0-SNAPSHOT)

Driver: Hive JDBC (version 0.14.0-SNAPSHOT)

Transaction isolation: TRANSACTION_REPEATABLE_READ

Be aware that org.apache.hcatalog.pig.HCatLoader was deprecated in Hive 0.13.x and removed in Hive 0.14.x. You must now use org.apache.hive.hcatalog.pig.HCatLoader.