Cloudera JDBC Driver for Impala Version 2.5.38 Important Notice © 2010-2017 Cloudera, Inc. All rights reserved. Cloudera, the Cloudera logo, and any other product or service names or slogans contained in this document, except as otherwise disclaimed, are trademarks of Cloudera and its suppliers or licensors, and may not be copied, imitated or used, in whole or in part, without the prior written permission of Cloudera or the applicable trademark holder. Hadoop and the Hadoop elephant logo are trademarks of the Apache Software Foundation. All other trademarks, registered trademarks, product names and company names or logos mentioned in this document are the property of their respective owners. Reference to any products, services, processes or other information, by trade name, trademark, manufacturer, supplier or otherwise does not constitute or imply endorsement, sponsorship or recommendation thereof by us. Complying with all applicable copyright laws is the responsibility of the user. Without limiting the rights under copyright, no part of this document may be reproduced, stored in or introduced into a retrieval system, or transmitted in any form or by any means (electronic, mechanical, photocopying, recording, or otherwise), or for any purpose, without the express written permission of Cloudera. Cloudera may have patents, patent applications, trademarks, copyrights, or other intellectual property rights covering subject matter in this document. Except as expressly provided in any written license agreement from Cloudera, the furnishing of this document does not give you any license to these patents, trademarks copyrights, or other intellectual property. The information in this document is subject to change without notice. Cloudera shall not be liable for any damages resulting from technical errors or omissions which may be present in this document, or from use of this document. Cloudera, Inc. 1001 Page Mill Road, Building 2 Palo Alto, CA 94304-1008 info@cloudera.com US: 1-888-789-1488 Intl: 1-650-843-0595 www.cloudera.com Release Information Version: 2.5.38 Date: May 31, 2017 2 | Cloudera JDBC Driver for Impala Table of Contents ABOUT THE CLOUDERA JDBC DRIVER FOR I MPALA 5 SYSTEM R EQUIREMENTS 6 CLOUDERA JDBC DRIVER FOR I MPALA FILES 7 I NSTALLING AND U SING THE CLOUDERA JDBC DRIVER FOR I MPALA 8 REFERENCING THE JDBC DRIVER L IBRARIES 8 REGISTERING THE DRIVER CLASS 8 BUILDING THE CONNECTION URL 9 CONFIGURING AUTHENTICATION 11 U SING N O A UTHENTICATION 11 U SING KERBEROS 11 U SING U SER N AME 12 U SING U SER N AME A ND PASSWORD (LDAP) 13 CONFIGURING KERBEROS A UTHENTICATION FOR WINDOWS 13 U SING KERBEROS CONSTRAINED DELEGATION 17 CONFIGURING SSL 19 CONFIGURING SERVER-SIDE PROPERTIES 21 CONFIGURING L OGGING 22 FEATURES 24 SQL TRANSLATION 24 DATA TYPES 24 CATALOG AND SCHEMA SUPPORT 25 WRITE-BACK 25 SECURITY AND A UTHENTICATION 26 INTERFACES AND SUPPORTED METHODS 27 DRIVER CONFIGURATION OPTIONS 84 A LLOWSELFSIGNED CERT 84 A SYNC E XEC POLLINTERVAL 84 A UTH MECH 84 CAISSUED CERTSMISMATCH 85 CATALOG SCHEMASWITCH 85 DEFAULTSTRING COLUMNL ENGTH 85 DELEGATIONUID 86 KRB A UTH TYPE 86 KRB HOSTFQDN 87 KRB REALM 87 Cloudera JDBC Driver for Impala | 3 KRB SERVICEN AME 87 L OG L EVEL 87 L OG PATH 88 L OWER CASERESULTSETCOLUMNN AME 89 O PTIMIZED INSERT 89 PREPARED METAL IMITZERO 89 PWD 90 ROWSFETCHED PER BLOCK 90 SOCKETTIMEOUT 90 SSL 91 SSLKEYSTORE 91 SSLKEYSTOREPWD 91 SSLTRUSTSTORE 92 SSLTRUSTSTOREPWD 92 STRIP CATALOG N AME 92 SUPPORTTIMEO NLYTIMESTAMP 93 UID 93 U SEN ATIVEQUERY 93 U SESASL 94 CONTACT U S 95 4 | Cloudera JDBC Driver for Impala About the Cloudera JDBC Driver for Impala About the Cloudera JDBC Driver for Impala The Cloudera JDBC Driver for Impala is used for direct SQL and Impala SQL access to Apache Hadoop / Impala distributions, enabling Business Intelligence (BI), analytics, and reporting on Hadoop / Impala-based data. The driver efficiently transforms an application’s SQL query into the equivalent form in Impala SQL, which is a subset of SQL-92. If an application is Impala-aware, then the driver is configurable to pass the query through to the database for processing. The driver interrogates Impala to obtain schema information to present to a SQL-based application. Queries, including joins, are translated from SQL to Impala SQL. For more information about the differences between Impala SQL and SQL, see "Features" on page 24. The Cloudera JDBC Driver for Impala complies with the JDBC 4.0 and 4.1 data standards. JDBC is one of the most established and widely supported APIs for connecting to and working with databases. At the heart of the technology is the JDBC driver, which connects an application to the database. For more information about JDBC, see the Data Access Standards Glossary: http://www.simba.com/resources/data-access-standards-library. This guide is suitable for users who want to access data residing within Impala from their desktop environment. Application developers might also find the information helpful. Refer to your application for details on connecting via JDBC. Cloudera JDBC Driver for Impala | 5 System Requirements System Requirements Each machine where you use the Cloudera JDBC Driver for Impala must have Java Runtime Environment (JRE) installed. The version of JRE that must be installed depends on the version of the JDBC API you are using with the driver. The following table lists the required version of JRE for each provided version of the JDBC API. JDBC API Version JRE Version 4.0 6.0 or later 4.1 7.0 or later The driver is recommended for Impala versions 1.0.1 through 2.5, and CDH versions 5.0 through 5.10. The driver also supports later minor versions of CDH 5. 6 | Cloudera JDBC Driver for Impala Cloudera JDBC Driver for Impala Files Cloudera JDBC Driver for Impala Files The Cloudera JDBC Driver for Impala is delivered in the following two ZIP archives, where [Version] is the version number of the driver: l ImpalaJDBC4_[Version].zip l ImpalaJDBC41_[Version].zip Each archive contains the driver supporting the JDBC API version indicated in the archive name, as well as release notes and third party license information. Cloudera JDBC Driver for Impala | 7 Installing and Using the Cloudera JDBC Driver for Impala Installing and Using the Cloudera JDBC Driver for Impala To install the Cloudera JDBC Driver for Impala on your machine, extract the files from the appropriate ZIP archive to the directory of your choice. To access an Impala data store using the Cloudera JDBC Driver for Impala, you need to configure the following: l The list of driver library files (see "Referencing the JDBC Driver Libraries" on page 8) l The Driver or DataSource class (see "Registering the Driver Class" on page 8) l The connection URL for the driver (see "Building the Connection URL" on page 9) Important: The Cloudera JDBC Driver for Impala is a forward-only, read-only driver with no transaction support. Because the driver does not support transactions, auto-commit is always set to true. Referencing the JDBC Driver Libraries Before you use the Cloudera JDBC Driver for Impala, the JDBC application or Java code that you are using to connect to the data store must be able to access the driver JAR files. In the application or code, specify all the JAR files that you extracted from the appropriate ZIP archive. Using the Driver in a JDBC Application Most JDBC applications provide a set of configuration options for adding a list of driver library files. Use the provided options to include all the JAR files from the ZIP archive as part of the driver configuration in the application. For more information, see the documentation for your JDBC application. Using the Driver in Java Code You must include all the driver library files in the class path. This is the path that the Java Runtime Environment searches for classes and other resource files. For more information, see "Setting the Class Path" in the Java SE Documentation: l l For Windows: http://docs.oracle.com/javase/7/docs/technotes/tools/windows/classpath.html For Linux and Solaris: http://docs.oracle.com/javase/7/docs/technotes/tools/solaris/classpath.html Registering the Driver Class Before connecting to the data store, you must register the appropriate class for your application. The following is a list of the classes used to connect the Cloudera JDBC Driver for Impala to Impala data stores. The Driver classes extend java.sql.Driver, and the DataSource classes extend javax.sql.DataSource and javax.sql.ConnectionPoolDataSource. 8 | Cloudera JDBC Driver for Impala Installing and Using the Cloudera JDBC Driver for Impala To support JDBC 4.0, classes with the following FQCNs are available: l com.cloudera.impala.jdbc4.Driver l com.cloudera.impala.jdbc4.DataSource To support JDBC 4.1, classes with the following FQCNs are available: l com.cloudera.impala.jdbc41.Driver l com.cloudera.impala.jdbc41.DataSource The following sample code shows how to use the DriverManager to establish a connection for JDBC 4: Note: In these examples, the line Class.forName(DRIVER_CLASS); is only required for JDBC 4.0 and earlier. private static Connection connectViaDM() throws Exception { Connection connection = null; Class.forName(DRIVER_CLASS); connection = DriverManager.getConnection(CONNECTION_URL); return connection; } The following sample code shows how to use the DataSource class to establish a connection: private static Connection connectViaDS() throws Exception { Connection connection = null; Class.forName(DRIVER_CLASS); DataSource ds = new com.cloudera.impala.jdbc41.DataSource(); ds.setURL(CONNECTION_URL); connection = ds.getConnection(); return connection; } Building the Connection URL Use the connection URL to supply connection information to the data store that you are accessing. The following is the format of the connection URL for the Cloudera JDBC Driver for Impala, where [Host] is the DNS or IP address of the Impala server and [Port] is the number of the TCP port that the server uses to listen for client requests: jdbc:impala://[Host]:[Port] Note: By default, Impala uses port 21050. Cloudera JDBC Driver for Impala | 9 Installing and Using the Cloudera JDBC Driver for Impala By default, the driver uses the schema named default. You can specify optional settings such as the schema to use or any of the connection properties supported by the driver. For a list of the properties available in the driver, see "Driver Configuration Options" on page 84. Note: If you specify a property that is not supported by the driver, then the driver attempts to apply the property as a Impala server-side property for the client session. For more information, see "Configuring Server-Side Properties" on page 21. The following is the format of a connection URL that specifies some optional settings: jdbc:impala://[Host]:[Port]/[Schema];[Property1]=[Value]; [Property2]=[Value];... For example, to connect to port 18000 on an Impala server installed on the local machine, use a schema named default2, and authenticate the connection using a user name and password, you would use the following connection URL: jdbc:impala://node1.example.com:18000/default2;AuthMech=3; UID=cloudera;PWD=cloudera Important: l Properties are case-sensitive. l Do not duplicate properties in the connection URL. 10 | Cloudera JDBC Driver for Impala Configuring Authentication Configuring Authentication The Cloudera JDBC Driver for Impala supports the following authentication mechanisms: l No Authentication l Kerberos l User Name l User Name And Password You configure the authentication mechanism that the driver uses to connect to Impala by specifying the relevant properties in the connection URL. For information about configuring the authentication mechanism that Impala uses, see the Impala documentation: http://www.cloudera.com/content/cloudera/en/documentation.html. For information about the properties you can use in the connection URL, see "Driver Configuration Options" on page 84. Note: In addition to authentication, you can configure the driver to connect over SSL. For more information, see "Configuring SSL" on page 19. Using No Authentication You provide this information to the driver in the connection URL. For more information about the syntax of the connection URL, see "Building the Connection URL" on page 9. To configure a connection without authentication: Set the AuthMech property to 0. For example: jdbc:impala://localhost:21050;AuthMech=0; Using Kerberos Kerberos must be installed and configured before you can use this authentication mechanism. For information about configuring and operating Kerberos on Windows, see "Configuring Kerberos Authentication for Windows" on page 13. For other operating systems, see the MIT Kerberos documentation: http://web.mit.edu/kerberos/krb5-latest/doc/. You provide this information to the driver in the connection URL. For more information about the syntax of the connection URL, see "Building the Connection URL" on page 9. Note: The driver also supports Kerberos constrained delegation. For more details on this, see "Using Kerberos Constrained Delegation " on page 17. Cloudera JDBC Driver for Impala | 11 Configuring Authentication To configure default Kerberos authentication: 1. Set the AuthMech property to 1. 2. To use the default realm defined in your Kerberos setup, do not set the KrbRealm property. If your Kerberos setup does not define a default realm or if the realm of your Impala server is not the default, then set the KrbRealm property to the realm of the Impala server. 3. Set the KrbHostFQDN property to the fully qualified domain name of the Impala server host. 4. If you are using Kerberos Constrained Delegation, set the userGSSCredential property to your Kerberos GSS Credential. 5. Optionally, specify how the driver obtains the Kerberos Subject by setting the KrbAuthType property as follows: l l l To configure the driver to automatically detect which method to use for obtaining the Subject, set the KrbAuthType property to 0. Alternatively, do not set the KrbAuthType property. Or, to create a LoginContext from a JAAS configuration and then use the Subject associated with it, set the KrbAuthType property to 1. Or, to create a LoginContext from a Kerberos ticket cache and then use the Subject associated with it, set the KrbAuthType property to 2. For more detailed information about how the driver obtains Kerberos Subjects based on these settings, see "KrbAuthType" on page 86. For example, the following connection URL connects to a Impala server with Kerberos enabled, but without SSL enabled: jdbc:impala://node1.example.com:21050;AuthMech=1; KrbRealm=EXAMPLE.COM;KrbHostFQDN=node1.example.com; KrbServiceName=impala In this example, Kerberos is enabled for JDBC connections, the Kerberos service principal name is impala/node1.example.com@EXAMPLE.COM, the host name for the data source is node1.example.com, and the server is listening on port 21050 for JDBC connections. Using User Name This authentication mechanism requires a user name but does not require a password. The user name labels the session, facilitating database tracking. You provide this information to the driver in the connection URL. For more information about the syntax of the connection URL, see "Building the Connection URL" on page 9. To configure User Name authentication: 1. Set the AuthMech property to 2. 2. Set the UID property to an appropriate user name for accessing the Impala server. 12 | Cloudera JDBC Driver for Impala Configuring Authentication For example: jdbc:impala://node1.example.com:21050;AuthMech=2;UID=impala Using User Name And Password (LDAP) This authentication mechanism requires a user name and a password. It is most commonly used with LDAP authentication. You provide this information to the driver in the connection URL. For more information about the syntax of the connection URL, see "Building the Connection URL" on page 9. To configure User Name And Password authentication: 1. Set the AuthMech property to 3. 2. Set the UID property to an appropriate user name for accessing the Impala server. 3. Set the PWD property to the password corresponding to the user name you provided. For example, the following connection URL connects to a Impala server with LDAP authentication enabled, but without SSL or SASL enabled: jdbc:impala://node1.example.com:21050;AuthMech=3; UID=impala;PWD=cloudera; In this example, user name and password (LDAP) authentication is enabled for JDBC connections, the LDAP user name is impala, the password is cloudera, and the server is listening on port 21050 for JDBC connections. Configuring Kerberos Authentication for Windows You can configure your Kerberos setup so that you use the MIT Kerberos Ticket Manager to get the Ticket Granting Ticket (TGT), or configure the setup so that you can use the driver to get the ticket directly from the Key Distribution Center (KDC). Also, if a client application obtains a Subject with a TGT, it is possible to use that Subject to authenticate the connection. Downloading and Installing MIT Kerberos for Windows To download and install MIT Kerberos for Windows 4.0.1: 1. Download the appropriate Kerberos installer: l l For a 64-bit machine, use the following download link from the MIT Kerberos website: http://web.mit.edu/kerberos/dist/kfw/4.0/kfw-4.0.1-amd64.msi. For a 32-bit machine, use the following download link from the MIT Kerberos website: http://web.mit.edu/kerberos/dist/kfw/4.0/kfw-4.0.1-i386.msi. Note: The 64-bit installer includes both 32-bit and 64-bit libraries. The 32-bit installer includes 32bit libraries only. Cloudera JDBC Driver for Impala | 13 Configuring Authentication 2. To run the installer, double-click the .msi file that you downloaded. 3. Follow the instructions in the installer to complete the installation process. 4. When the installation completes, click Finish. Using the MIT Kerberos Ticket Manager to Get Tickets Setting the KRB5CCNAME Environment Variable You must set the KRB5CCNAME environment variable to your credential cache file. To set the KRB5CCNAME environment variable: 1. Click Start , then right-click Computer, and then click Properties. 2. Click Advanced System Settings. 3. In the System Properties dialog box, on the Advanced tab, click Environment Variables. 4. In the Environment Variables dialog box, under the System Variables list, click New. 5. In the New System Variable dialog box, in the Variable Name field, type KRB5CCNAME. 6. In the Variable Value field, type the path for your credential cache file. For example, type C:\KerberosTickets.txt. 7. Click OK to save the new variable. 8. Make sure that the variable appears in the System Variables list. 9. Click OK to close the Environment Variables dialog box, and then click OK to close the System Properties dialog box. 10. Restart your machine. Getting a Kerberos Ticket To get a Kerberos ticket: 1. Click Start , then click All Programs, and then click the Kerberos for Windows (64-bit) or Kerberos for Windows (32-bit) program group. 2. Click MIT Kerberos Ticket Manager. 3. In the MIT Kerberos Ticket Manager, click Get Ticket. 4. In the Get Ticket dialog box, type your principal name and password, and then click OK. If the authentication succeeds, then your ticket information appears in the MIT Kerberos Ticket Manager. Authenticating to the Impala Server You provide this information to the driver in the connection URL. For more information about the syntax of the connection URL, see "Building the Connection URL" on page 9. To authenticate to the Impala server: Use a connection URL that has the following properties defined: 14 | Cloudera JDBC Driver for Impala Configuring Authentication l AuthMech l KrbHostFQDN l KrbRealm l KrbServiceName For detailed information about these properties, see "Driver Configuration Options" on page 84 Using the Driver to Get Tickets Deleting the KRB5CCNAME Environment Variable To enable the driver to get Ticket Granting Tickets (TGTs) directly, make sure that the KRB5CCNAME environment variable has not been set. To delete the KRB5CCNAME environment variable: 1. Click the Start button , then right-click Computer, and then click Properties. 2. Click Advanced System Settings. 3. In the System Properties dialog box, click the Advanced tab and then click Environment Variables. 4. In the Environment Variables dialog box, check if the KRB5CCNAME variable appears in the System variables list. If the variable appears in the list, then select the variable and click Delete. 5. Click OK to close the Environment Variables dialog box, and then click OK to close the System Properties dialog box. Setting Up the Kerberos Configuration File To set up the Kerberos configuration file: 1. Create a standard krb5.ini file and place it in the C:\Windows directory. 2. Make sure that the KDC and Admin server specified in the krb5.ini file can be resolved from your terminal. If necessary, modify C:\Windows\System32\drivers\etc\hosts. Setting Up the JAAS Login Configuration File To set up the JAAS login configuration file: 1. Create a JAAS login configuration file that specifies a keytab file and doNotPrompt=true. For example: Client { com.sun.security.auth.module.Krb5LoginModule required useKeyTab=true keyTab="PathToTheKeyTab" principal="cloudera@CLOUDERA" doNotPrompt=true; Cloudera JDBC Driver for Impala | 15 Configuring Authentication }; 2. Set the java.security.auth.login.config environment variable to the location of the JAAS file. For example: C:\KerberosLoginConfig.ini. Authenticating to the Impala Server You provide this information to the driver in the connection URL. For more information about the syntax of the connection URL, see "Building the Connection URL" on page 9. To authenticate to the Impala server: Use a connection URL that has the following properties defined: l AuthMech l KrbHostFQDN l KrbRealm l KrbServiceName For detailed information about these properties, see "Driver Configuration Options" on page 84. Using an Existing Subject to Authenticate the Connection If the client application obtains a Subject with a TGT, then that Subject can be used to authenticate the connection to the server. To use an existing Subject to authenticate the connection: 1. Create a PrivilegedAction for establishing the connection to the database. For example: // Contains logic to be executed as a privileged action public class AuthenticateDriverAction implements PrivilegedAction<Void> { // The connection, which is established as a PrivilegedAction Connection con; // Define a string as the connection URL static String ConnectionURL = "jdbc:impala://192.168.1.1:21050"; /** * Logic executed in this method will have access to the * Subject that is used to "doAs". The driver will get * the Subject and use it for establishing a connection * with the server. 16 | Cloudera JDBC Driver for Impala Configuring Authentication */ @Override public Void run() { try { // Establish a connection using the connection URL con = DriverManager.getConnection(ConnectionURL); } catch (SQLException e) { // Handle errors that are encountered during // interaction with the data store e.printStackTrace(); } catch (Exception e) { // Handle other errors e.printStackTrace(); } return null; } } 2. Run the PrivilegedAction using the existing Subject, and then use the connection. For example: // Create the action AuthenticateDriverAction authenticateAction = new AuthenticateDriverAction(); // Establish the connection using the Subject for // authentication. Subject.doAs(loginConfig.getSubject(), authenticateAction); // Use the established connection. authenticateAction.con; Using Kerberos Constrained Delegation The driver can also be configured to use Kerberos Constrained Delegation. This feature allows a service to obtain service tickets to a restricted list of other services running on specific servers on the network after it has been presented with a service ticket. For more details on the process see: https://technet.microsoft.com/en-ca/library/cc995228.aspx. The userGSSCredential connection property can be used in the connection URL to pass in a GSSCredential object. The following sample code shows how to use the property to pass the GSSCredential into the driver using JDBC 4.1. GSSCredential userCredential = [GSSCredential] Cloudera JDBC Driver for Impala | 17 Configuring Authentication Driver driver = (Driver) Class.forName ("com.cloudera.impala.jdbc41.Driver").newInstance(); Properties properties = new Properties(); properties.put("userGSSCredential", userCredential); Connection conn = driver.connect( "jdbc:impala://node1.example.com:21050;AuthMech=1;KrbRealm=E XAMPLE.COM; KrbHostFQDN=node1.example.com;KrbServiceName=impala" ,properties); 18 | Cloudera JDBC Driver for Impala Configuring SSL Configuring SSL Note: In this documentation, "SSL" indicates both TLS (Transport Layer Security) and SSL (Secure Sockets Layer). The driver supports industry-standard versions of TLS/SSL. If you are connecting to an Impala server that has Secure Sockets Layer (SSL) enabled, you can configure the driver to connect to an SSL-enabled socket. When connecting to a server over SSL, the driver uses one-way authentication to verify the identity of the server. One-way authentication requires a signed, trusted SSL certificate for verifying the identity of the server. You can configure the driver to access a specific TrustStore or KeyStore that contains the appropriate certificate. If you do not specify TrustStore or KeyStore, then the driver uses the default Java TrustStore named jssecacerts. If jssecacerts is not available, then the driver uses cacerts instead. You provide this information to the driver in the connection URL. For more information about the syntax of the connection URL, see "Building the Connection URL" on page 9. To configure SSL: 1. If you are not using one of the default Java TrustStores, then do one of the following: l Create a TrustStore and configure the driver to use it: a. Create a TrustStore containing your signed, trusted server certificate. b. Set the SSLTrustStore property to the full path of the TrustStore. c. Set the SSLTrustStorePwd property to the password for accessing the TrustStore. l Or, create a KeyStore and configure the driver to use it: a. Create a KeyStore containing your signed, trusted server certificate. b. Set the SSLKeyStore property to the full path of the KeyStore. c. Set the SSLKeyStorePwd property to the password for accessing the KeyStore. 2. Set the SSL property to 1. 3. Optionally, to allow the SSL certificate used by the server to be self-signed, set the AllowSelfSignedCerts property to 1. 4. Optionally, to allow the common name of a CA-issued certificate to not match the host name of the Impala server, set the CAIssuedCertNamesMismatch property to 1. Note: For self-signed certificates, the driver always allows the common name of the certificate to not match the host name. Cloudera JDBC Driver for Impala | 19 Configuring SSL For example, the following connection URL connects to a data source using username and password (LDAP) authentication, with SSL enabled: jdbc:impala://localhost:21050;AuthMech=3;SSL=1; SSLKeyStore=C:\\Users\\bsmith\\Desktop\\keystore.jks; SSLKeyStorePwd=clouderaSSL123;UID=impala;PWD=cloudera123 Note: For more information about the connection properties used in SSL connections, see "Driver Configuration Options" on page 84 20 | Cloudera JDBC Driver for Impala Configuring Server-Side Properties Configuring Server-Side Properties When connecting to a server that is running Impala 2.0 or later, you can use the driver to apply configuration properties to the server by setting the properties in the connection URL. Important: This feature is not supported for earlier versions of Impala, where the SET statement can only be executed from within the Impala shell. For example, to set the MEM_LIMIT query option to 1 GB and the REQUEST_POOL query option to myPool, you would use a connection URL such as the following: jdbc:impala://localhost:18000/default2;AuthMech=3; UID=cloudera;PWD=cloudera;MEM_LIMIT=1000000000;REQUEST_ POOL=myPool Cloudera JDBC Driver for Impala | 21 Configuring Logging Configuring Logging To help troubleshoot issues, you can enable logging in the driver. Important: Only enable logging long enough to capture an issue. Logging decreases performance and can consume a large quantity of disk space. In the connection URL, set the LogLevel key to enable logging at the desired level of detail. The following table lists the logging levels provided by the Cloudera JDBC Driver for Impala, in order from least verbose to most verbose. LogLevel Value Description 0 Disable all logging. 1 Log severe error events that lead the driver to abort. 2 Log error events that might allow the driver to continue running. 3 Log events that might result in an error if action is not taken. 4 Log general information that describes the progress of the driver. 5 Log detailed information that is useful for debugging the driver. 6 Log all driver activity. To enable logging: 1. Set the LogLevel property to the desired level of information to include in log files. 2. Set the LogPath property to the full path to the folder where you want to save log files. To make sure that the connection URL is compatible with all JDBC applications, escape the backslashes (\) in your file paths by typing another backslash. For example, the following connection URL enables logging level 3 and saves the log files in the C:\temp folder: jdbc:impala://localhost:11000;LogLevel=3;LogPath=C:\\temp 3. To make sure that the new settings take effect, restart your JDBC application and reconnect to the server. The Cloudera JDBC Driver for Impala produces the following log files in the location specified in the LogPath property: l A ImpalaJDBC_driver.log file that logs driver activity that is not specific to a connection. 22 | Cloudera JDBC Driver for Impala Configuring Logging l A Impala_connection_[Number].log file for each connection made to the database, where [Number] is a number that identifies each log file. This file logs driver activity that is specific to the connection. If the LogPath value is invalid, then the driver sends the logged information to the standard output stream (System.out). To disable logging: 1. Remove the LogLevel and LogPath properties from the connection URL. 2. To make sure that the new settings take effect, restart your JDBC application and reconnect to the server. Cloudera JDBC Driver for Impala | 23 Features Features More information is provided on the following features of the Cloudera JDBC Driver for Impala: l "SQL Translation" on page 24 l "Data Types" on page 24 l "Catalog and Schema Support" on page 25 l "Write-back" on page 25 l "Security and Authentication" on page 26 l "Interfaces and Supported Methods" on page 27 SQL Translation The Cloudera JDBC Driver for Impala is able to parse queries locally prior to sending them to the Impala server. This feature allows the driver to calculate query metadata without executing the query, support query parameters, and support extra SQL features such as JDBC escape sequences and additional scalar functions that are not available in the Impala-shell tool. Note: The driver does not support translation for queries that reference a field contained in a nested column (an ARRAY, MAP, or STRUCT column). To retrieve data from a nested column, make sure that the query is written in valid Impala SQL syntax. Data Types The Cloudera JDBC Driver for Impala supports many common data formats, converting between Impala, SQL, and Java data types. The following table lists the supported data type mappings. Impala Type SQL Type Java Type ARRAY VARCHAR String BIGINT BIGINT java.math.BigInteger BINARY VARBINARY byte[] BOOLEAN BOOLEAN Boolean CHAR CHAR String (Available only in CDH 5.2 or later) 24 | Cloudera JDBC Driver for Impala Features Impala Type SQL Type Java Type DATE DATE java.sql.Date DECIMAL DECIMAL java.math.BigDecimal DOUBLE Double FLOAT REAL Float INT INTEGER Long MAP VARCHAR String SMALLINT SMALLINT Integer STRUCT VARCHAR String TIMESTAMP TIMESTAMP java.sql.Timestamp TINYINT TINYINT Short VARCHAR VARCHAR String (Available only in CDH 5.1 or later) DOUBLE (REAL is an alias for DOUBLE) (Available only in CDH 5.2 or later) Catalog and Schema Support The Cloudera JDBC Driver for Impala supports both catalogs and schemas to make it easy for the driver to work with various JDBC applications. Since Impala only organizes tables into schemas/databases, the driver provides a synthetic catalog named IMPALA under which all of the schemas/databases are organized. The driver also maps the JDBC schema to the Impala schema/database. Note: Setting the CatalogSchemaSwitch connection property to 1 will cause Impala catalogs to be treated as schemas in the driver as a restriction for filtering. Write-back The Cloudera JDBC Driver for Impala supports translation for the following syntax: Cloudera JDBC Driver for Impala | 25 Features l INSERT l CREATE l DROP The driver also supports translation for UPDATE and DELETE syntax, but only when querying Kudu tables while connected to an Impala server that is running Impala 2.7 or later. If the statement contains non-standard SQL-92 syntax, then the driver is unable to translate the statement to SQL and instead falls back to using Impala SQL. Security and Authentication To protect data from unauthorized access, some Impala data stores require connections to be authenticated with user credentials or the SSL protocol. The Cloudera JDBC Driver for Impala provides full support for these authentication protocols. Note: In this documentation, "SSL" indicates both TLS (Transport Layer Security) and SSL (Secure Sockets Layer). The driver supports industry-standard versions of TLS/SSL. The driver provides mechanisms that allow you to authenticate your connection using the Kerberos protocol, your Impala user name only, or your Impala user name and password. You must use the authentication mechanism that matches the security requirements of the Impala server. For detailed driver configuration instructions, see "Configuring Authentication" on page 11. Additionally, the driver supports SSL connections with one-way authentication. If the server has an SSL-enabled socket, then you can configure the driver to connect to it. It is recommended that you enable SSL whenever you connect to a server that is configured to support it. SSL encryption protects data and credentials when they are transferred over the network, and provides stronger security than authentication alone. For detailed configuration instructions, see "Configuring SSL" on page 19. The SSL version that the driver supports depends on the JVM version that you are using. For information about the SSL versions that are supported by each version of Java, see "Diagnosing TLS, SSL, and HTTPS" on the Java Platform Group Product Management Blog: https://blogs.oracle.com/java-platform-group/entry/diagnosing_tls_ssl_and_https. Note: The SSL version used for the connection is the highest version that is supported by both the driver and the server, which is determined at connection time. 26 | Cloudera JDBC Driver for Impala Features Interfaces and Supported Methods The Cloudera JDBC Driver for Impala implements the following JDBC interfaces: l "CallableStatement" on page 27 l "PooledConnection" on page 57 l "Connection" on page 37 l "PreparedStatement" on page 58 l "DatabaseMetaData" on page 42 l "ResultSet" on page 64 l "DataSource" on page 55 l "ResultSetMetaData" on page 78 l "Driver" on page 56 l "Statement" on page 80 l "ParameterMetaData" on page 56 However, the driver does not support every method from these interfaces. For information about whether a specific method is supported by the driver and which version of the JDBC API is the earliest version that supports the method, refer to the following sections. The driver does not support the following JDBC features: l Array l SQLData l Blob l SQLInput l Clob l SQLOutput l Ref l Struct l Savepoint CallableStatement The CallableStatement interface extends the PreparedStatement interface. The following table lists the methods that belong to the CallableStatement interface, and describes whether each method is supported by the Cloudera JDBC Driver for Impala and which version of the JDBC API is the earliest version that supports the method. For detailed information about each method in the CallableStatement interface, see the Java API documentation: http://docs.oracle.com/javase/1.5.0/docs/api/java/sql/CallableStatement.html. Method Supported Supported Since by the Notes JDBC Driver Version Array getArray(int i) 3.0 No Array getArray(String 3.0 No Cloudera JDBC Driver for Impala | 27 Features Method Supported Supported Since by the Notes JDBC Driver Version parameterName) BigDecimal getBigDecimal (int parameterIndex) 3.0 Yes BigDecimal getBigDecimal (int parameterIndex, int scale) 3.0 Yes BigDecimal getBigDecimal (String parameterName) 3.0 Yes Blob getBlob(int i) 3.0 No Blob getBlob(String parameterName) 3.0 No boolean getBoolean(int parameterIndex) 3.0 Yes boolean getBoolean (String parameterName) 3.0 Yes byte getByte(int parameterIndex) 3.0 Yes byte getByte(String parameterName) 3.0 Yes byte[] getBytes(int parameterIndex) 3.0 Yes byte[] getBytes(String parameterName) 3.0 Yes Clob getClob(int i) 3.0 No Clob getClob(String parameterName) 3.0 No Date getDate(int parameterIndex) 3.0 Yes 28 | Cloudera JDBC Driver for Impala Deprecated. Features Method Supported Supported Since by the Notes JDBC Driver Version Date getDate(int parameterIndex, Calendar cal) 3.0 Yes Date getDate(String parameterName) 3.0 Yes Date getDate(String parameterName, Calendar cal) 3.0 Yes double getDouble(int parameterIndex) 3.0 Yes double getDouble(String parameterName) 3.0 Yes float getFloat(int parameterIndex) 3.0 Yes float getFloat(String parameterName) 3.0 Yes int getInt(int parameterIndex) 3.0 Yes int getInt(String parameterName) 3.0 Yes long getLong(int parameterIndex) 3.0 Yes long getLong(String parameterName) 3.0 Yes Reader getNCharacterStream(int parameterIndex) 4.0 No Reader getNCharacterStream (String parameterName) 4.0 No Cloudera JDBC Driver for Impala | 29 Features Method Supported Supported Since by the Notes JDBC Driver Version NClob getNClob(int parameterIndex) 4.0 No NClob getNClob(String parameterName) 4.0 No String getNString(int parameterIndex) 4.0 No String getNString(String parameterName) 4.0 No Object getObject(int parameterIndex) 3.0 Yes <T> T getObject(int parameterIndex, Class<T> type) 4.1 No Object getObject(int i, Map<String,Class<?>> map) 3.0 No Object getObject(String parameterName) 3.0 Yes <T> T getObject(String parameterName, Class<T> type) 4.1 No Object getObject(String parameterName, Map<String,Class<?>> map) 3.0 Yes Ref getRef(int i) 3.0 No Ref getRef(String parameterName) 3.0 No RowId getRowId(int parameterIndex) 4.0 No 30 | Cloudera JDBC Driver for Impala Features Method Supported Supported Since by the Notes JDBC Driver Version RowId getRowId(String parameterName) 4.0 No short getShort(int parameterIndex) 3.0 Yes short getShort(String parameterName) 3.0 Yes SQLXML getSQLXML(int parameterIndex) 4.0 No SQLXML getSQLXML(String parameterName) 4.0 No String getString(int parameterIndex) 3.0 Yes String getString(String parameterName) 3.0 Yes Time getTime(int parameterIndex) 3.0 Yes Time getTime(int parameterIndex, Calendar cal) 3.0 Yes Time getTime(String parameterName) 3.0 Yes Time getTime(String parameterName, Calendar cal) 3.0 Yes Timestamp getTimestamp (int parameterIndex) 3.0 Yes Timestamp getTimestamp (int parameterIndex, Calendar cal) 3.0 Yes Timestamp getTimestamp 3.0 Yes Cloudera JDBC Driver for Impala | 31 Features Method Supported Supported Since by the Notes JDBC Driver Version (String parameterName) Timestamp getTimestamp (String parameterName, Calendar cal) 3.0 Yes URL getURL(int parameterIndex) 3.0 No URL getURL(String parameterName) 3.0 No void registerOutParameter(int parameterIndex, int sqlType) 3.0 Yes void registerOutParameter(int parameterIndex, int sqlType, int scale) 3.0 Yes void registerOutParameter(int paramIndex, int sqlType, String typeName) 3.0 Yes void registerOutParameter (String parameterName, int sqlType) 3.0 Yes void registerOutParameter (String parameterName, int sqlType, int scale) 3.0 Yes void registerOutParameter (String parameterName, int sqlType, String typeName) 3.0 Yes void setAsciiStream 4.0 Yes 32 | Cloudera JDBC Driver for Impala Features Method Supported Supported Since by the Notes JDBC Driver Version (String parameterName, InputStream x) void setAsciiStream (String parameterName, InputStream x, int length) 3.0 Yes void setAsciiStream (String parameterName, InputStream x, long length) 4.0 Yes void setBigDecimal (String parameterName, BigDecimal x) 3.0 Yes void setBinaryStream (String parameterName, InputStream x) 4.0 Yes setBinaryStream(String parameterName, InputStream x, int length) 3.0 Yes void setBinaryStream (String parameterName, InputStream x, long length) 4.0 Yes void setBlob(String parameterName, Blob x) 4.0 Yes void setBlob(String parameterName, InputStream inputStream) 4.0 Yes void setBlob(String parameterName, InputStream inputStream, long length) 4.0 Yes Cloudera JDBC Driver for Impala | 33 Features Method Supported Supported Since by the Notes JDBC Driver Version void setBoolean(String parameterName, boolean x) 3.0 Yes void setByte(String parameterName, byte x) 3.0 Yes void setBytes(String parameterName, byte[] x) 3.0 Yes void setCharacterStream (String parameterName, Reader reader) 4.0 Yes void setCharacterStream (String parameterName, Reader reader, int length) 3.0 Yes void setCharacterStream (String parameterName, Reader reader, long length) 4.0 Yes void setClob(String parameterName, Clob x) 4.0 Yes void setClob(String parameterName, Reader reader) 4.0 Yes void setClob(String parameterName, Reader reader, long length) 4.0 Yes void setDate(String parameterName, Date x) 3.0 Yes void setDate(String parameterName, Date x, Calendar cal) 3.0 Yes 34 | Cloudera JDBC Driver for Impala Features Method Supported Supported Since by the Notes JDBC Driver Version void setDouble(String parameterName, double x) 3.0 Yes void setFloat(String parameterName, float x) 3.0 Yes void setInt(String parameterName, int x) 3.0 Yes void setLong(String parameterName, long x) 3.0 Yes void setNCharacterStream (String parameterName, Reader value) 4.0 Yes void setNCharacterStream (String parameterName, Reader value, long length) 4.0 Yes void setNClob(String parameterName, NClob value) 4.0 Yes void setNClob(String parameterName, Reader reader) 4.0 Yes void setNClob(String parameterName, Reader reader, long length) 4.0 Yes void setNString(String parameterName, String value) 4.0 Yes void setNull(String parameterName, int sqlType) 3.0 Yes void setNull(String 3.0 Yes Cloudera JDBC Driver for Impala | 35 Features Method Supported Supported Since by the Notes JDBC Driver Version parameterName, int sqlType, String typeName) void setObject(String parameterName, Object x) 3.0 Yes void setObject(String parameterName, Object x, int targetSqlType) 3.0 Yes void setObject(String parameterName, Object x, int targetSqlType, int scale) 3.0 Yes void setRowId(String parameterName, RowId x) 4.0 Yes void setShort(String parameterName, short x) 3.0 Yes void setSQLXML(String parameterName, SQLXML xmlObject) 4.0 Yes void setString(String parameterName, String x) 3.0 Yes void setTime(String parameterName, Time x) 3.0 Yes void setTime(String parameterName, Time x, Calendar cal) 3.0 Yes void setTimestamp(String parameterName, Timestamp x) 3.0 Yes void setTimestamp(String 3.0 Yes 36 | Cloudera JDBC Driver for Impala Features Method Supported Supported Since by the Notes JDBC Driver Version parameterName, Timestamp x, Calendar cal) void setURL(String parameterName, URL val) 3.0 Yes boolean wasNull() 3.0 Yes boolean isWrapperFor (Class<?> iface) 4.0 Yes <T> T unwrap(Class<T> iface) 4.0 Yes Connection The following table lists the methods that belong to the Connection interface, and describes whether each method is supported by the Cloudera JDBC Driver for Impala and which version of the JDBC API is the earliest version that supports the method. For detailed information about each method in the Connection interface, see the Java API documentation: http://docs.oracle.com/javase/1.5.0/docs/api/java/sql/Connection.html. Method Supported Supported Since by the Notes JDBC Driver Version void clearWarnings() 3.0 Yes void close() 3.0 Yes void commit() 3.0 Yes Array createArrayOf (String typeName, Object [] elements) 4.0 No Blob createBlob() 4.0 No Auto-commit cannot be set to false because it is hard-coded to true. Cloudera JDBC Driver for Impala | 37 Features Method Supported Supported Since by the Notes JDBC Driver Version Clob createClob() 4.0 No NClob createNClob() 4.0 No SQLXML createSQLXML() 4.0 No Statement createStatement () 3.0 Yes Statement createStatement (int resultSetType, int resultSetConcurrency) 3.0 No Statement createStatement (int resultSetType, int resultSetConcurrency, int resultSetHoldability) 3.0 No Struct createStruct (String typeName, Object [] attributes) 4.0 No boolean getAutoCommit() 3.0 Yes String getCatalog() 3.0 Yes Properties getClientInfo () 4.0 Yes String getClientInfo (String name) 4.0 Yes int getHoldability() 3.0 Yes DatabaseMetaData getMetaData() 3.0 Yes int getNetworkTimeout() 4.1 No String getSchema() 4.1 Yes 38 | Cloudera JDBC Driver for Impala Hard-coded to true. Hard-coded to CLOSE_ CURSORS_AT_COMMIT. The returned schema name does not always match the Features Method Supported Supported Since by the Notes JDBC Driver Version one used by statements. Statements use the schema name defined in the connection URL. int getTransactionIsolation() 3.0 Yes Map<String,Class<?>> getTypeMap() 3.0 No SQLWarning getWarnings() 3.0 Yes boolean isClosed() 3.0 Yes boolean isReadOnly() 3.0 Yes boolean isValid(int timeout) 4.0 Yes String nativeSQL(String sql) 3.0 Yes CallableStatement prepareCall(String sql) 3.0 No CallableStatement prepareCall(String sql, int resultSetType, int resultSetConcurrency) 3.0 No CallableStatement prepareCall(String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability) 3.0 No PreparedStatement prepareStatement(String sql) 3.0 Yes Hard-coded to TRANSACTION_READ_ UNCOMMITTED. Returns true. Cloudera JDBC Driver for Impala | 39 Features Method Supported Supported Since by the Notes JDBC Driver Version PreparedStatement prepareStatement(String sql, int autoGeneratedKeys) 3.0 No PreparedStatement prepareStatement(String sql, int[] columnIndexes) 3.0 No PreparedStatement prepareStatement(String sql, int resultSetType, int resultSetConcurrency) 3.0 No PreparedStatement prepareStatement(String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability) 3.0 No PreparedStatement prepareStatement(String sql, String[] columnNames) 3.0 No void releaseSavepoint (Savepoint savepoint) 3.0 No Savepoints are not available because transactions are not supported. void rollback() 3.0 No Savepoints are not available because transactions are not supported. void rollback(Savepoint savepoint) 3.0 No Savepoints are not available because transactions are not supported. void setAutoCommit (boolean autoCommit) 3.0 Yes Ignored because autocommit is hard-coded to true. 40 | Cloudera JDBC Driver for Impala Features Method Supported Supported Since by the Notes JDBC Driver Version void setCatalog(String catalog) 3.0 Yes void setClientInfo (Properties properties) 4.0 Yes void setClientInfo(String name, String value) 4.0 Yes void setHoldability(int holdability) 3.0 Yes void setNetworkTimeout (Executor executor, int milliseconds) 4.1 No void setReadOnly(boolean readOnly) 3.0 Yes Savepoint setSavepoint() 3.0 No Savepoints are not available because transactions are not supported. Savepoint setSavepoint (String name) 3.0 No Savepoints are not available because transactions are not supported. void setSchema(String schema) 4.1 Yes Does not actually change the schema name used by newly created statements; only changes the value returned by getSchema (). void setTransactionIsolation (int level) 3.0 Yes void setTypeMap (Map<String,Class<?>> map) 3.0 No boolean isWrapperFor 4.0 Yes Cloudera JDBC Driver for Impala | 41 Features Method Supported Supported Since by the Notes JDBC Driver Version (Class<?> iface) <T> T unwrap(Class<T> iface) 4.0 Yes DatabaseMetaData The following table lists the methods that belong to the DatabaseMetaData interface, and describes whether each method is supported by the Cloudera JDBC Driver for Impala and which version of the JDBC API is the earliest version that supports the method. For detailed information about each method in the DatabaseMetaData interface, see the Java API documentation:http://docs.oracle.com/javase/1.5.0/docs/api/java/sql/DatabaseMetaData.html. Method Suppo rted Since JDBC Versio n Suppo rted Notes by the Driver boolean allProceduresAreCallable() 3.0 Yes Returns true. boolean allTablesAreSelectable() 3.0 Yes Returns true. boolean autoCommitFailureClosesAllResultSets () 4.0 Yes Returns true. boolean dataDefinitionCausesTransactionCommi t() 3.0 Yes Returns false. boolean dataDefinitionIgnoredInTransactions () 3.0 Yes Returns false. boolean deletesAreDetected(int type) 3.0 Yes Returns true. boolean doesMaxRowSizeIncludeBlobs() 3.0 Yes Returns false. 42 | Cloudera JDBC Driver for Impala Features Method Suppo rted Since JDBC Versio n Suppo rted Notes by the Driver boolean generatedKeyAlwaysReturned() 4.1 Yes ResultSet getAttributes(String catalog, String schemaPattern, String typeNamePattern, String attributeNamePattern) 3.0 Yes ResultSet getBestRowIdentifier (String catalog, String schema, String table, int scope, boolean nullable) 3.0 Yes ResultSet getCatalogs() 3.0 Yes String getCatalogSeparator() 3.0 Yes String getCatalogTerm() 3.0 Yes ResultSet getClientInfoProperties() 4.0 Yes ResultSet getColumnPrivileges(String catalog, String schema, String table, String columnNamePattern) 3.0 Yes ResultSet getColumns(String catalog, String schemaPattern, String tableNamePattern, String columnNamePattern) 3.0 Yes Connection getConnection() 3.0 Yes ResultSet getCrossReference(String primaryCatalog, String primarySchema, String primaryTable, String foreignCatalog, String foreignSchema, String foreignTable) 3.0 Yes int getDatabaseMajorVersion() 3.0 Yes Cloudera JDBC Driver for Impala | 43 Features Method Suppo rted Since JDBC Versio n Suppo rted Notes by the Driver int getDatabaseMinorVersion() 3.0 Yes String getDatabaseProductName() 3.0 Yes String getDatabaseProductVersion() 3.0 Yes int getDefaultTransactionIsolation() 3.0 Yes int getDriverMajorVersion() 3.0 Yes int getDriverMinorVersion() 3.0 Yes String getDriverName() 3.0 Yes String getDriverVersion() 3.0 Yes ResultSet getExportedKeys(String catalog, String schema, String table) 3.0 Yes String getExtraNameCharacters() 3.0 Yes ResultSet getFunctionColumns(String catalog, String schemaPattern, String functionNamePattern, String columnNamePattern) 4.0 Yes ResultSet getFunctions(String catalog, String schemaPattern, String functionNamePattern) 4.0 Yes String getIdentifierQuoteString() 3.0 Yes 44 | Cloudera JDBC Driver for Impala Hard-coded to Impala. Hard-coded to TRANSACTION_ READ_ UNCOMMITTED. Hard-coded to ImpalaJDBC. Returns an empty String. Returns a backquote (`) Features Method Suppo rted Since JDBC Versio n Suppo rted Notes by the Driver ResultSet getImportedKeys(String catalog, String schema, String table) 3.0 Yes ResultSet getIndexInfo(String catalog, String schema, String table, boolean unique, boolean approximate) 3.0 Yes int getJDBCMajorVersion() 3.0 Yes int getJDBCMinorVersion() 3.0 Yes int getMaxBinaryLiteralLength() 3.0 Yes Returns 0. int getMaxCatalogNameLength() 3.0 Yes Returns 128. int getMaxCharLiteralLength() 3.0 Yes Returns 0. int getMaxColumnNameLength() 3.0 Yes Returns 128. int getMaxColumnsInGroupBy() 3.0 Yes Returns 0. int getMaxColumnsInIndex() 3.0 Yes Returns 0. int getMaxColumnsInOrderBy() 3.0 Yes Returns 0. int getMaxColumnsInSelect() 3.0 Yes Returns 0. int getMaxColumnsInTable() 3.0 Yes Returns 0. int getMaxConnections() 3.0 Yes Returns 0. int getMaxCursorNameLength() 3.0 Yes Returns 0. int getMaxIndexLength() 3.0 Yes Returns 0. int getMaxProcedureNameLength() 3.0 Yes Returns 0. int getMaxRowSize() 3.0 Yes Returns 0. Cloudera JDBC Driver for Impala | 45 Features Method Suppo rted Since JDBC Versio n Suppo rted Notes by the Driver int getMaxSchemaNameLength() 3.0 Yes Returns 128. int getMaxStatementLength() 3.0 Yes Returns 0. int getMaxStatements() 3.0 Yes Returns 0. int getMaxTableNameLength() 3.0 Yes Returns 128. int getMaxTablesInSelect() 3.0 Yes Returns 0. int getMaxUserNameLength() 3.0 Yes Returns 0. String getNumericFunctions() 3.0 Yes Returns the Numeric Functions list from the specification related to the JDBC version of the driver. ResultSet getPrimaryKeys(String catalog, String schema, String table) 3.0 Yes ResultSet getProcedureColumns(String catalog, String schemaPattern, String procedureNamePattern, String columnNamePattern) 3.0 Yes ResultSet getProcedures(String catalog, String schemaPattern, String procedureNamePattern) 3.0 Yes String getProcedureTerm() 3.0 Yes ResultSet getPseudoColumns(String catalog, String schemaPattern, String tableNamePattern, String columnNamePattern) 4.1 Yes 46 | Cloudera JDBC Driver for Impala Returns procedure. Features Method Suppo rted Since JDBC Versio n Suppo rted Notes by the Driver int getResultSetHoldability() 3.0 Yes Returns CLOSE_ CURSORS_AT_ COMMIT. RowIdLifetime getRowIdLifetime() 4.0 Yes Returns ROWID_ UNSUPPORTED. ResultSet getSchemas() 3.0 Yes ResultSet getSchemas(String catalog, String schemaPattern) 4.0 Yes String getSchemaTerm() 3.0 Yes Returns schema. String getSearchStringEscape() 3.0 Yes Returns a backslash (\). String getSQLKeywords() 3.0 Yes Returns an empty String. int getSQLStateType() 3.0 Yes Returns sqlStateSQL99. String getStringFunctions() 3.0 Yes Returns the String Functions list from the specification related to the JDBC version of the driver. ResultSet getSuperTables(String catalog, String schemaPattern, String tableNamePattern) 3.0 Yes ResultSet getSuperTypes(String catalog, String schemaPattern, String typeNamePattern) 3.0 Yes String getSystemFunctions() 3.0 Yes Returns Cloudera JDBC Driver for Impala | 47 Features Method Suppo rted Since JDBC Versio n Suppo rted Notes by the Driver DATABASE,IFNU LL,USER. ResultSet getTablePrivileges(String catalog, String schemaPattern, String tableNamePattern) 3.0 Yes ResultSet getTables(String catalog, String schemaPattern, String tableNamePattern, String[] types) 3.0 Yes ResultSet getTableTypes() 3.0 Yes String getTimeDateFunctions() 3.0 Yes ResultSet getTypeInfo() 3.0 Yes ResultSet getUDTs(String catalog, String schemaPattern, String typeNamePattern, int[] types) 3.0 Yes String getURL() 3.0 Yes String getUserName() 3.0 Yes ResultSet getVersionColumns(String catalog, String schema, String table) 3.0 Yes boolean insertsAreDetected(int type) 3.0 Yes boolean isCatalogAtStart() 3.0 Yes 48 | Cloudera JDBC Driver for Impala Returns the Time and Date Functions list from the specification related to the JDBC version of the driver. Features Method Suppo rted Since JDBC Versio n Suppo rted Notes by the Driver boolean isReadOnly() 3.0 Yes Returns true. boolean locatorsUpdateCopy() 3.0 Yes Returns false. boolean nullPlusNonNullIsNull() 3.0 Yes Returns true. boolean nullsAreSortedAtEnd() 3.0 Yes Returns false. boolean nullsAreSortedAtStart() 3.0 Yes Returns false. boolean nullsAreSortedHigh() 3.0 Yes Returns false. boolean nullsAreSortedLow() 3.0 Yes Returns true. boolean othersDeletesAreVisible(int type) 3.0 Yes boolean othersInsertsAreVisible(int type) 3.0 Yes boolean othersUpdatesAreVisible(int type) 3.0 Yes boolean ownDeletesAreVisible(int type) 3.0 Yes boolean ownInsertsAreVisible(int type) 3.0 Yes boolean ownUpdatesAreVisible(int type) 3.0 Yes boolean storesLowerCaseIdentifiers() 3.0 Yes Returns false. boolean storesLowerCaseQuotedIdentifiers() 3.0 Yes Returns false. boolean storesMixedCaseIdentifiers() 3.0 Yes Returns true. Cloudera JDBC Driver for Impala | 49 Features Method Suppo rted Since JDBC Versio n Suppo rted Notes by the Driver boolean storesMixedCaseQuotedIdentifiers() 3.0 Yes Returns true. boolean storesUpperCaseIdentifiers() 3.0 Yes Returns false. boolean storesUpperCaseQuotedIdentifiers() 3.0 Yes Returns false. boolean supportsAlterTableWithAddColumn() 3.0 Yes Returns false. boolean supportsAlterTableWithDropColumn() 3.0 Yes Returns false. boolean supportsANSI92EntryLevelSQL () 3.0 Yes Returns true. boolean supportsANSI92FullSQL() 3.0 Yes Returns false. boolean supportsANSI92IntermediateSQL() 3.0 Yes Returns false. boolean supportsBatchUpdates() 3.0 Yes Returns false. boolean supportsCatalogsInDataManipulation() 3.0 Yes Returns true. boolean supportsCatalogsInIndexDefinitions() 3.0 Yes Returns true. boolean supportsCatalogsInPrivilegeDefinitio ns() 3.0 Yes Returns true. boolean supportsCatalogsInProcedureCalls() 3.0 Yes Returns true. boolean 3.0 Yes Returns true. 50 | Cloudera JDBC Driver for Impala Features Method Suppo rted Since JDBC Versio n Suppo rted Notes by the Driver supportsCatalogsInTableDefinitions() boolean supportsColumnAliasing() 3.0 Yes Returns true. boolean supportsConvert() 3.0 Yes Returns true. boolean supportsConvert(int fromType, int toType) 3.0 Yes boolean supportsCoreSQLGrammar() 3.0 Yes Returns true. boolean supportsCorrelatedSubqueries () 3.0 Yes Returns true. boolean supportsDataDefinitionAndDataManipul ationTransactions() 3.0 Yes Returns false. boolean supportsDataManipulationTransactions Only() 3.0 Yes Returns false. boolean supportsDifferentTableCorrelationNam es() 3.0 Yes Returns false. boolean supportsExpressionsInOrderBy () 3.0 Yes Returns true. boolean supportsExtendedSQLGrammar() 3.0 Yes Returns false. boolean supportsFullOuterJoins() 3.0 Yes Returns true. boolean supportsGetGeneratedKeys() 3.0 Yes Returns false. boolean supportsGroupBy() 3.0 Yes Returns true. boolean supportsGroupByBeyondSelect () 3.0 Yes Returns true. Cloudera JDBC Driver for Impala | 51 Features Method Suppo rted Since JDBC Versio n Suppo rted Notes by the Driver boolean supportsGroupByUnrelated() 3.0 Yes Returns false. boolean supportsIntegrityEnhancementFacility () 3.0 Yes Returns false. boolean supportsLikeEscapeClause() 3.0 Yes Returns true. boolean supportsLimitedOuterJoins() 3.0 Yes Returns false. boolean supportsMinimumSQLGrammar() 3.0 Yes Returns true. boolean supportsMixedCaseIdentifiers () 3.0 Yes Returns false. boolean supportsMixedCaseQuotedIdentifiers() 3.0 Yes Returns true. boolean supportsMultipleOpenResults () 3.0 Yes Returns false. boolean supportsMultipleResultSets() 3.0 Yes Returns false. boolean supportsMultipleTransactions () 3.0 Yes Returns true. boolean supportsNamedParameters() 3.0 Yes Returns false. boolean supportsNonNullableColumns() 3.0 Yes Returns false. boolean supportsOpenCursorsAcrossCommit() 3.0 Yes Returns false. boolean supportsOpenCursorsAcrossRollback() 3.0 Yes Returns false. boolean supportsOpenStatementsAcrossCommit() 3.0 Yes Returns true. 52 | Cloudera JDBC Driver for Impala Features Method Suppo rted Since JDBC Versio n Suppo rted Notes by the Driver boolean supportsOpenStatementsAcrossRollback () 3.0 Yes Returns true. boolean supportsOrderByUnrelated() 3.0 Yes Returns false. boolean supportsOuterJoins() 3.0 Yes Returns false. boolean supportsPositionedDelete() 3.0 Yes Returns false. boolean supportsPositionedUpdate() 3.0 Yes Returns false. boolean supportsResultSetConcurrency (int type, int concurrency) 3.0 Yes boolean supportsResultSetHoldability (int holdability) 3.0 Yes boolean supportsResultSetType(int type) 3.0 Yes boolean supportsSavepoints() 3.0 Yes Returns false. boolean supportsSchemasInDataManipulation() 3.0 Yes Returns true. boolean supportsSchemasInIndexDefinitions() 3.0 Yes Returns true. boolean supportsSchemasInPrivilegeDefinition s() 3.0 Yes Returns true. boolean supportsSchemasInProcedureCalls() 3.0 Yes Returns false. boolean supportsSchemasInTableDefinitions() 3.0 Yes Returns true. Cloudera JDBC Driver for Impala | 53 Features Method Suppo rted Since JDBC Versio n Suppo rted Notes by the Driver boolean supportsSelectForUpdate() 3.0 Yes Returns false. boolean supportsStatementPooling() 3.0 Yes Returns false. boolean supportsStoredFunctionsUsingCallSynt ax() 4.0 Yes Returns false. boolean supportsStoredProcedures() 3.0 Yes Returns true. boolean supportsSubqueriesInComparisons() 3.0 Yes Returns true. boolean supportsSubqueriesInExists() 3.0 Yes Returns true. boolean supportsSubqueriesInIns() 3.0 Yes Returns true. boolean supportsSubqueriesInQuantifieds() 3.0 Yes Returns true. boolean supportsTableCorrelationNames() 3.0 Yes Returns true. boolean supportsTransactionIsolationLevel (int level) 3.0 Yes boolean supportsTransactions() 3.0 Yes Returns false. boolean supportsUnion() 3.0 Yes Returns true. boolean supportsUnionAll() 3.0 Yes Returns true. boolean updatesAreDetected(int type) 3.0 Yes Returns true. boolean usesLocalFilePerTable() 3.0 Yes Returns false. boolean usesLocalFiles() 3.0 Yes Returns false. 54 | Cloudera JDBC Driver for Impala Features Suppo rted Since JDBC Versio n Method Suppo rted Notes by the Driver boolean isWrapperFor(Class<?> iface) 4.0 Yes <T> T unwrap(Class<T> iface) 4.0 Yes DataSource The following table lists the methods that belong to the DataSource interface, and describes whether each method is supported by the Cloudera JDBC Driver for Impala and which version of the JDBC API is the earliest version that supports the method. For detailed information about each method in the DataSource interface, see the Java API documentation: http://docs.oracle.com/javase/1.5.0/docs/api/javax/sql/DataSource.html. Method Supported Supported Since by the Notes JDBC Driver Version Connection getConnection () 3.0 Yes Connection getConnection (String username, String password) 3.0 Yes int getLoginTimeout() 3.0 Yes PrintWriter getLogWriter () 3.0 Yes Logger getParentLogger() 4.1 No void setLoginTimeout(int seconds) 3.0 Yes void setLogWriter (PrintWriter out) 3.0 Yes The driver does not use java.util.logging. Cloudera JDBC Driver for Impala | 55 Features Supported Supported Since by the Notes JDBC Driver Version Method boolean isWrapperFor (Class<?> iface) 4.0 Yes <T> T unwrap(Class<T> iface) 4.0 Yes Driver The following table lists the methods that belong to the Driver interface, and describes whether each method is supported by the Cloudera JDBC Driver for Impala and which version of the JDBC API is the earliest version that supports the method. For detailed information about each method in the Driver interface, see the Java API documentation: http://docs.oracle.com/javase/1.5.0/docs/api/java/sql/Driver.html. Method Supported Supported Since by the Notes JDBC Driver Version boolean acceptsURL (String url) 3.0 Yes Connection connect (String url, Properties info) 3.0 Yes int getMajorVersion() 3.0 Yes int getMinorVersion() 3.0 Yes Logger getParentLogger() 4.1 No DriverPropertyInfo[] getPropertyInfo(String url, Properties info) 3.0 Yes boolean jdbcCompliant() 3.0 Yes ParameterMetaData The following table lists the methods that belong to the ParameterMetaData interface, and describes whether each method is supported by the Cloudera JDBC Driver for Impala and which 56 | Cloudera JDBC Driver for Impala Features version of the JDBC API is the earliest version that supports the method. For detailed information about each method in the ParameterMetaData interface, see the Java API documentation: http://docs.oracle.com/javase/1.5.0/docs/api/java/sql/ParameterMetaData.html. Method Supported Supported Since by the Notes JDBC Driver Version String getParameterClassName (int param) 3.0 Yes int getParameterCount() 3.0 Yes int getParameterMode(int param) 3.0 Yes int getParameterType(int param) 3.0 Yes String getParameterTypeName(int param) 3.0 Yes int getPrecision(int param) 3.0 Yes int getScale(int param) 3.0 Yes int isNullable(int param) 3.0 Yes boolean isSigned(int param) 3.0 Yes boolean isWrapperFor (Class<?> iface) 4.0 Yes <T> T unwrap(Class<T> iface) 4.0 Yes PooledConnection The following table lists the methods that belong to the PooledConnection interface, and describes whether each method is supported by the Cloudera JDBC Driver for Impala and which version of the JDBC API is the earliest version that supports the method. Cloudera JDBC Driver for Impala | 57 Features For detailed information about each method in the PooledConnection interface, see the Java API documentation: http://docs.oracle.com/javase/1.5.0/docs/api/javax/sql/PooledConnection.html. Method Supporte d Since JDBC Version Supporte d Notes by the Driver void addConnectionEventListener (ConnectionEventListener listener) 3.0 Yes void addStatementEventListener (StatementEventListener listener) 4.0 Yes void close() 3.0 Yes Connection getConnection() 3.0 Yes void removeConnectionEventListe ner (ConnectionEventListener listener) 3.0 Yes void removeStatementEventListen er(StatementEventListener listener) 4.0 Yes Removes the specified StatementEventListen er from the list of components that will be notified when the driver detects that a PreparedStatement has been closed or is invalid. PreparedStatement The PreparedStatement interface extends the Statement interface. The following table lists the methods that belong to the PreparedStatement interface, and describes whether each method is supported by the Cloudera JDBC Driver for Impala and which version of the JDBC API is the earliest version that supports the method. 58 | Cloudera JDBC Driver for Impala Features For detailed information about each method in the PooledConnection interface, see the Java API documentation: http://docs.oracle.com/javase/1.5.0/docs/api/java/sql/PreparedStatement.html. Method Supported Supported Since by the Notes JDBC Driver Version void addBatch() 3.0 Yes void clearParameters() 3.0 Yes boolean execute() 3.0 Yes ResultSet executeQuery() 3.0 Yes int executeUpdate() 3.0 Yes ResultSetMetaData getMetaData() 3.0 Yes ParameterMetaData getParameterMetaData() 3.0 Yes void setArray(int parameterIndex, Array x) 3.0 No void setAsciiStream(int parameterIndex, InputStream x) 4.0 Yes void setAsciiStream(int parameterIndex, InputStream x, int length) 3.0 Yes void setAsciiStream(int parameterIndex, InputStream x, long length) 4.0 Yes void setBigDecimal(int parameterIndex, BigDecimal x) 3.0 Yes void setBinaryStream(int 4.0 Yes Cloudera JDBC Driver for Impala | 59 Features Method Supported Supported Since by the Notes JDBC Driver Version parameterIndex, InputStream x) void setBinaryStream(int parameterIndex, InputStream x, int length) 3.0 Yes void setBinaryStream(int parameterIndex, InputStream x, long length) 4.0 Yes void setBlob(int parameterIndex, Blob x) 3.0 No void setBlob(int parameterIndex, InputStream inputStream) 4.0 No void setBlob(int parameterIndex, InputStream inputStream, long length) 4.0 No void setBoolean(int parameterIndex, boolean x) 3.0 Yes void setByte(int parameterIndex, byte x) 3.0 Yes void setBytes(int parameterIndex, byte[] x) 3.0 Yes void setCharacterStream (int parameterIndex, Reader reader) 4.0 Yes void setCharacterStream (int parameterIndex, Reader reader, int 3.0 Yes 60 | Cloudera JDBC Driver for Impala Features Method Supported Supported Since by the Notes JDBC Driver Version length) void setCharacterStream (int parameterIndex, Reader reader, long length) 4.0 Yes void setClob(int parameterIndex, Clob x) 3.0 No void setClob(int parameterIndex, Reader reader) 4.0 No void setClob(int parameterIndex, Reader reader, long length) 4.0 No void setDate(int parameterIndex, Date x) 3.0 Yes void setDate(int parameterIndex, Date x, Calendar cal) 3.0 Yes void setDouble(int parameterIndex, double x) 3.0 Yes void setFloat(int parameterIndex, float x) 3.0 Yes void setInt(int parameterIndex, int x) 3.0 Yes void setLong(int parameterIndex, long x) 3.0 Yes void setNCharacterStream (int parameterIndex, Reader value) 4.0 No Cloudera JDBC Driver for Impala | 61 Features Method Supported Supported Since by the Notes JDBC Driver Version void setNCharacterStream (int parameterIndex, Reader value, long length) 4.0 No void setNClob(int parameterIndex, NClob value) 4.0 No void setNClob(int parameterIndex, Reader reader) 4.0 No void setNClob(int parameterIndex, Reader reader, long length) 4.0 No void setNString(int parameterIndex, String value) 4.0 No void setNull(int paramIndex, int sqlType, String typeName) 3.0 Yes void setObject(int parameterIndex, Object x) 3.0 Yes void setObject(int parameterIndex, Object x, int targetSqlType) 3.0 Yes void setObject(int parameterIndex, Object x, int targetSqlType, int scale) 3.0 Yes void setRef(int parameterIndex, Ref x) 3.0 No void setRowId(int parameterIndex, RowId x) 4.0 No 62 | Cloudera JDBC Driver for Impala Features Method Supported Supported Since by the Notes JDBC Driver Version void setShort(int parameterIndex, short x) 3.0 No void setSQLXML(int parameterIndex, SQLXML xmlObject) 4.0 Yes void setString(int parameterIndex, String x) 3.0 Yes void setTime(int parameterIndex, Time x) 3.0 Yes void setTime(int parameterIndex, Time x, Calendar cal) 3.0 Yes void setTimestamp(int parameterIndex, Timestamp x) 3.0 Yes void setTimestamp(int parameterIndex, Timestamp x, Calendar cal) 3.0 Yes void setUnicodeStream (int parameterIndex, InputStream x, int length) 3.0 Yes void setURL(int parameterIndex, URL x) 3.0 No boolean isWrapperFor (Class<?> iface) 4.0 Yes <T> T unwrap(Class<T> iface) 4.0 Yes Deprecated. Cloudera JDBC Driver for Impala | 63 Features ResultSet The following table lists the methods that belong to the ResultSet interface, and describes whether each method is supported by the Cloudera JDBC Driver for Impala and which version of the JDBC API is the earliest version that supports the method. For detailed information about each method in the ResultSet interface, see the Java API documentation: http://docs.oracle.com/javase/1.5.0/docs/api/java/sql/ResultSet.html. Method Supported Supported Since by the Notes JDBC Driver Version boolean absolute(int row) 3.0 No void afterLast() 3.0 No void beforeFirst() 3.0 No void cancelRowUpdates() 3.0 No void clearWarnings() 3.0 Yes void close() 3.0 Yes void deleteRow() 3.0 No int findColumn(String columnName) 3.0 Yes boolean first() 3.0 No Array getArray(int i) 3.0 No Array getArray(String colName) 3.0 No InputStream getAsciiStream(int columnIndex) 3.0 Yes InputStream getAsciiStream(String columnName) 3.0 Yes 64 | Cloudera JDBC Driver for Impala Not valid because the driver is read-only. Not valid because the driver is read-only. Features Method Supported Supported Since by the Notes JDBC Driver Version BigDecimal getBigDecimal (int columnIndex) 3.0 Yes BigDecimal getBigDecimal (int columnIndex, int scale) 3.0 Yes BigDecimal getBigDecimal (String columnName) 3.0 Yes BigDecimal getBigDecimal (String columnName, int scale) 3.0 Yes InputStream getBinaryStream(int columnIndex) 3.0 Yes InputStream getBinaryStream(String columnName) 3.0 Yes Blob getBlob(int i) 3.0 No Blob getBlob(String colName) 3.0 No boolean getBoolean(int columnIndex) 3.0 Yes boolean getBoolean(String columnName) 3.0 Yes getByte(int columnIndex) 3.0 Yes byte getByte(String columnName) 3.0 Yes byte[] getBytes(int columnIndex) 3.0 Yes byte[] getBytes(String columnName) 3.0 Yes Deprecated. Deprecated. Cloudera JDBC Driver for Impala | 65 Features Method Supported Supported Since by the Notes JDBC Driver Version Reader getCharacterStream (int columnIndex) 3.0 Yes Reader getCharacterStream (String columnName) 3.0 Yes Clob getClob(int i) 3.0 No Clob getClob(String colName) 3.0 No int getConcurrency() 3.0 Yes String getCursorName() 3.0 Yes Date getDate(int columnIndex) 3.0 Yes Date getDate(int columnIndex, Calendar cal) 3.0 Yes Date getDate(String columnName) 3.0 Yes Date getDate(String columnName, Calendar cal) 3.0 Yes double getDouble(int columnIndex) 3.0 Yes double getDouble(String columnName) 3.0 Yes int getFetchDirection() 3.0 Yes int getFetchSize() 3.0 Yes float getFloat(int columnIndex) 3.0 Yes float getFloat(String 3.0 Yes 66 | Cloudera JDBC Driver for Impala Features Method Supported Supported Since by the Notes JDBC Driver Version columnName) int getHoldability() 4.0 Yes int getInt(int columnIndex) 3.0 Yes int getInt(String columnName) 3.0 Yes long getLong(int columnIndex) 3.0 Yes long getLong(String columnName) 3.0 Yes ResultSetMetaData getMetaData() 3.0 Yes Reader getNCharacterStream(int columnIndex) 4.0 No Reader getNCharacterStream (String columnLabel 4.0 No NClob getNClob(int columnIndex) 4.0 No NClob getNClob(String columnLabel) 4.0 No String getNString(int columnIndex) 4.0 No String getNString(String columnLabel) 4.0 No Object getObject(int columnIndex) 3.0 Yes <T> T getObject(int 4.1 No Cloudera JDBC Driver for Impala | 67 Features Method Supported Supported Since by the Notes JDBC Driver Version columnIndex, Class<T> type) Object getObject(int i, Map<String,Class<?>> map) 3.0 No Object getObject(String columnName) 3.0 No <T> T getObject(String columnName, Class<T> type) 4.1 No Object getObject(String colName, Map<String,Class<?>> map) 3.0 Yes Ref getRef(int i) 3.0 No Ref getRef(String colName) 3.0 No int getRow() 3.0 Yes RowId getRowId(int columnIndex) 4.0 No RowId getRowId(String columnLabel) 4.0 No short getShort(int columnIndex) 3.0 Yes short getShort(String columnName) 3.0 Yes SQLXML getSQLXML(int columnIndex) 4.0 No SQLXML getSQLXML(String columnLabel) 4.0 No 68 | Cloudera JDBC Driver for Impala Features Method Supported Supported Since by the Notes JDBC Driver Version Statement getStatement() 3.0 Yes String getString(int columnIndex) 3.0 Yes String getString(String columnName) 3.0 Yes Time getTime(int columnIndex) 3.0 Yes Time getTime(int columnIndex, Calendar cal) 3.0 Yes Time getTime(String columnName) 3.0 Yes Time getTime(String columnName, Calendar cal) 3.0 Yes Timestamp getTimestamp (int columnIndex) 3.0 Yes Timestamp getTimestamp (int columnIndex, Calendar cal) 3.0 Yes Timestamp getTimestamp (String columnName) 3.0 Yes Timestamp getTimestamp (String columnName, Calendar cal) 3.0 Yes int getType() 3.0 Yes InputStream getUnicodeStream(int columnIndex) 3.0 Yes Deprecated. InputStream 3.0 Yes Deprecated. Cloudera JDBC Driver for Impala | 69 Features Method Supported Supported Since by the Notes JDBC Driver Version getUnicodeStream(String columnName) URL getURL(int columnIndex) 3.0 No URL getURL(String columnName) 3.0 No SQLWarning getWarnings() 3.0 Yes void insertRow() 3.0 No boolean isAfterLast() 3.0 Yes boolean isBeforeFirst() 3.0 Yes boolean isClosed() 4.0 Yes boolean isFirst() 3.0 Yes boolean isLast() 3.0 No boolean last() 3.0 No void moveToCurrentRow() 3.0 No Not valid because the driver is read-only. void moveToInsertRow() 3.0 No Not valid because the driver is read-only. boolean next() 3.0 Yes boolean previous() 3.0 No void refreshRow() 3.0 No boolean relative(int rows) 3.0 No boolean rowDeleted() 3.0 Yes 70 | Cloudera JDBC Driver for Impala Not valid because the driver is read-only. Hard-coded to false. Features Method Supported Supported Since by the Notes JDBC Driver Version boolean rowInserted() 3.0 Yes Hard-coded to false. boolean rowUpdated() 3.0 Yes Hard-coded to false. void setFetchDirection (int direction) 3.0 No Not valid because the driver is forward-only. void setFetchSize(int rows) 3.0 Yes void updateArray(int columnIndex, Array x) 3.0 No void updateArray(String columnName, Array x) 3.0 No void updateAsciiStream (int columnIndex, InputStream x) 4.0 No Not valid because the driver is read-only. void updateAsciiStream (int columnIndex, InputStream x, int length) 3.0 No Not valid because the driver is read-only. void updateAsciiStream (int columnIndex, InputStream x, long length) 4.0 No Not valid because the driver is read-only. void updateAsciiStream (String columnName, InputStream x) 4.0 No Not valid because the driver is read-only. void updateAsciiStream (String columnName, InputStream x, int length) 3.0 No Not valid because the driver is read-only. void updateAsciiStream (String columnName, InputStream x, long length) 4.0 No Not valid because the driver is read-only. Cloudera JDBC Driver for Impala | 71 Features Method Supported Supported Since by the Notes JDBC Driver Version void updateBigDecimal(int columnIndex, BigDecimal x) 3.0 No Not valid because the driver is read-only. void updateBigDecimal (String columnName, BigDecimal x) 3.0 No Not valid because the driver is read-only. void updateBinaryStream (int columnIndex, InputStream x) 4.0 No Not valid because the driver is read-only. void updateBinaryStream (int columnIndex, InputStream x, int length) 3.0 No Not valid because the driver is read-only. void updateBinaryStream (int columnIndex, InputStream x, long length) 4.0 No Not valid because the driver is read-only. void updateBinaryStream (String columnName, InputStream x) 4.0 No Not valid because the driver is read-only. void updateBinaryStream (String columnName, InputStream x, int length) 3.0 No Not valid because the driver is read-only. void updateBinaryStream (String columnName, InputStream x, long length) 4.0 No Not valid because the driver is read-only. void updateBlob(int columnIndex, InputStream inputStream) 4.0 No void updateBlob(int columnIndex, Blob x) 3.0 No 72 | Cloudera JDBC Driver for Impala Features Method Supported Supported Since by the Notes JDBC Driver Version void updateBlob(int columnIndex, InputStream inputStream, long length) 4.0 No void updateBlob(String columnName, InputStream inputStream) 4.0 No void updateBlob(String columnName, Blob x) 3.0 No void updateBlob(String columnLabel, InputStream inputStream, long length) 4.0 No void updateBoolean(int columnIndex, boolean x) 3.0 No Not valid because the driver is read-only. void updateBoolean(String columnName, boolean x) 3.0 No Not valid because the driver is read-only. void updateByte(int columnIndex, byte x) 3.0 No Not valid because the driver is read-only. void updateByte(String columnName, byte x) 3.0 No Not valid because the driver is read-only. void updateBytes(int columnIndex, byte[] x) 3.0 No Not valid because the driver is read-only. void updateBytes(String columnName, byte[] x) 3.0 No Not valid because the driver is read-only. void updateCharacterStream(int columnIndex, Reader x, int length) 3.0 No Not valid because the driver is read-only. void updateCharacterStream (String columnName, 3.0 No Not valid because the driver is read-only. Cloudera JDBC Driver for Impala | 73 Features Method Supported Supported Since by the Notes JDBC Driver Version Reader reader, int length) void updateBlob(int columnIndex, InputStream inputStream) 4.0 No void updateClob(int columnIndex, Clob x) 3.0 No void updateBlob(int columnIndex, InputStream inputStream, long length) 4.0 No void updateBlob(String columnName, InputStream inputStream) 4.0 No void updateClob(String columnName, Clob x) 3.0 No void updateBlob(String columnName, InputStream inputStream, long length) 4.0 No void updateDate(int columnIndex, Date x) 3.0 No Not valid because the driver is read-only. void updateDate(String columnName, Date x) 3.0 No Not valid because the driver is read-only. void updateDouble(int columnIndex, double x) 3.0 No Not valid because the driver is read-only. void updateDouble(String columnName, double x) 3.0 No Not valid because the driver is read-only. void updateFloat(int columnIndex, float x) 3.0 No Not valid because the driver is read-only. void updateFloat(String 3.0 No Not valid because the driver 74 | Cloudera JDBC Driver for Impala Features Method Supported Supported Since by the Notes JDBC Driver Version is read-only. columnName, float x) void updateInt(int columnIndex, int x) 3.0 No Not valid because the driver is read-only. void updateInt(String columnName, int x) 3.0 No Not valid because the driver is read-only. void updateLong(int columnIndex, long x) 3.0 No Not valid because the driver is read-only. void updateLong(String columnName, long x) 3.0 No Not valid because the driver is read-only. void updateNCharacterStream (int columnIndex, Reader x) 4.0 No void updateNCharacterStream (int columnIndex, Reader x, long length) 4.0 No void updateNCharacterStream (String columnName, Reader reader) 4.0 No void updateNCharacterStream (String columnName, Reader reader, long length) 4.0 No void updateNClob(int columnIndex, NClob nClob) 4.0 No void updateNClob(int columnIndex, Reader reader) 4.0 No Cloudera JDBC Driver for Impala | 75 Features Method Supported Supported Since by the Notes JDBC Driver Version void updateNClob(int columnIndex, Reader reader, long length) 4.0 No void updateNClob(String columnName, NClob nClob) 4.0 No void updateNClob(String columnName, Reader reader) 4.0 No void updateNClob(String columnName, Reader reader, long length) 4.0 No void updateNString(int columnIndex, String nString) 4.0 No void updateNString(String columnName, String nString) 4.0 No void updateNull(int columnIndex) 3.0 No Not valid because the driver is read-only. void updateNull(String columnName) 3.0 No Not valid because the driver is read-only. void updateObject(int columnIndex, Object x) 3.0 No Not valid because the driver is read-only. void updateObject(int columnIndex, Object x, int scale) 3.0 No Not valid because the driver is read-only. void updateObject(String columnName, Object x) 3.0 No Not valid because the driver is read-only. void updateObject(String columnName, Object x, int scale) 3.0 No Not valid because the driver is read-only. 76 | Cloudera JDBC Driver for Impala Features Method Supported Supported Since by the Notes JDBC Driver Version void updateRef(int columnIndex, Ref x) 3.0 No Not valid because the driver is read-only. void updateRef(String columnName, Ref x) 3.0 No Not valid because the driver is read-only. void updateRow() 3.0 No Not valid because the driver is read-only. void updateRowId(int columnIndex, RowId x) 4.0 No void updateRowId(String columnName, RowId x) 4.0 No void updateShort(int columnIndex, short x) 3.0 No Not valid because the driver is read-only. void updateShort(String columnName, short x) 3.0 No Not valid because the driver is read-only. void updateSQLXML(int columnIndex, SQLXML xmlObject) 4.0 No void updateSQLXML(String columnName, SQLXML xmlObject) 4.0 No void updateString(int columnIndex, String x) 3.0 No Not valid because the driver is read-only. void updateString(String columnName, String x) 3.0 No Not valid because the driver is read-only. void updateTime(int columnIndex, Time x) 3.0 No Not valid because the driver is read-only. void updateTime(String columnName, Time x) 3.0 No Not valid because the driver is read-only. void updateTimestamp(int 3.0 No Not valid because the driver Cloudera JDBC Driver for Impala | 77 Features Method Supported Supported Since by the Notes JDBC Driver Version is read-only. columnIndex, Timestamp x) void updateTimestamp (String columnName, Timestamp x) 3.0 No boolean wasNull() 3.0 Yes boolean isWrapperFor (Class<?> iface) 4.0 Yes <T> T unwrap(Class<T> iface) 4.0 Yes Not valid because the driver is read-only. ResultSetMetaData The following table lists the methods that belong to the ResultSetMetaData interface, and describes whether each method is supported by the Cloudera JDBC Driver for Impala and which version of the JDBC API is the earliest version that supports the method. For detailed information about each method in the ResultSetMetaData interface, see the Java API documentation: http://docs.oracle.com/javase/1.5.0/docs/api/java/sql/ResultSetMetaData.html. Method Supported Supported Since by the Notes JDBC Driver Version String getCatalogName (int column) 3.0 Yes String getColumnClassName(int column) 3.0 Yes int getColumnCount() 3.0 Yes int getColumnDisplaySize (int column) 3.0 Yes String getColumnLabel 3.0 Yes 78 | Cloudera JDBC Driver for Impala Features Method Supported Supported Since by the Notes JDBC Driver Version (int column) String getColumnName(int column) 3.0 Yes int getColumnType(int column) 3.0 Yes String getColumnTypeName (int column) 3.0 Yes int getPrecision(int column) 3.0 Yes int getScale(int column) 3.0 Yes String getSchemaName(int column) 3.0 Yes String getTableName(int column) 3.0 Yes boolean isAutoIncrement (int column) 3.0 Yes boolean isCaseSensitive (int column) 3.0 Yes boolean isCurrency(int column) 3.0 Yes boolean isDefinitelyWritable(int column) 3.0 Yes int isNullable(int column) 3.0 Yes boolean isReadOnly(int column) 3.0 Yes boolean isSearchable(int 3.0 Yes Cloudera JDBC Driver for Impala | 79 Features Method Supported Supported Since by the Notes JDBC Driver Version column) boolean isSigned(int column) 3.0 Yes boolean isWritable(int column) 3.0 Yes boolean isWrapperFor (Class<?> iface) 4.0 Yes <T> T unwrap(Class<T> iface) 4.0 Yes Statement The following table lists the methods that belong to the Statement interface, and describes whether each method is supported by the Cloudera JDBC Driver for Impala and which version of the JDBC API is the earliest version that supports the method. For detailed information about each method in the Statement interface, see the Java API documentation: http://docs.oracle.com/javase/1.5.0/docs/api/java/sql/Statement.html. Method Supported Supported Since by the Notes JDBC Driver Version void addBatch(String sql) 3.0 Yes void cancel() 3.0 Yes void clearBatch() 3.0 Yes void clearWarnings() 3.0 Yes void close() 3.0 Yes void closeOnCompletion() 4.1 Yes boolean execute(String 3.0 Yes 80 | Cloudera JDBC Driver for Impala Features Method Supported Supported Since by the Notes JDBC Driver Version sql) boolean execute(String sql, int autoGeneratedKeys) 3.0 No boolean execute(String sql, int[] columnIndexes) 3.0 No boolean execute(String sql, String[] columnNames) 3.0 No int[]executeBatch() 3.0 No ResultSet executeQuery (String sql) 3.0 Yes int executeUpdate(String sql) 3.0 Yes int executeUpdate(String sql, int autoGeneratedKeys) 3.0 No int executeUpdate(String sql, int[] columnIndexes) 3.0 No int executeUpdate(String sql, String[] columnNames) 3.0 No Connection getConnection () 3.0 Yes int getFetchDirection() 3.0 Yes int getFetchSize() 3.0 Yes ResultSet getGeneratedKeys() 3.0 Yes Cloudera JDBC Driver for Impala | 81 Features Method Supported Supported Since by the Notes JDBC Driver Version int getMaxFieldSize() 3.0 Yes int getMaxRows() 3.0 Yes boolean getMoreResults() 3.0 Yes boolean getMoreResults (int current) 3.0 No int getQueryTimeout() 3.0 Yes ResultSet getResultSet() 3.0 Yes int getResultSetConcurrency() 3.0 Yes Hard-coded to CONCUR_ READ_ONLY. int getResultSetHoldability() 3.0 Yes Hard-coded to CLOSE_ CURSORS_AT_COMMIT. int getResultSetType() 3.0 Yes Hard-coded to TYPE_ FORWARD_ONLY. int getUpdateCount() 3.0 Yes SQLWarning getWarnings() 3.0 Yes boolean isClosed() 4.0 Yes boolean isCloseOnCompletion() 4.1 Yes boolean isPoolable() 4.0 Yes void setCursorName(String name) 3.0 No void setEscapeProcessing (boolean enable) 3.0 Yes void setFetchDirection 3.0 No 82 | Cloudera JDBC Driver for Impala Features Method Supported Supported Since by the Notes JDBC Driver Version (int direction) void setFetchSize(int rows) 3.0 Yes void setMaxFieldSize(int max) 3.0 Yes void setMaxRows(int max) 3.0 Yes void setPoolable(boolean poolable) 4.0 Yes void setQueryTimeout(int seconds) 3.0 Yes boolean isWrapperFor (Class<?> iface) 4.0 Yes <T> T unwrap(Class<T> iface) 4.0 Yes Cloudera JDBC Driver for Impala | 83 Driver Configuration Options Driver Configuration Options Driver Configuration Options lists and describes the properties that you can use to configure the behavior of the Cloudera JDBC Driver for Impala. You can set configuration properties using the connection URL. For more information, see "Building the Connection URL" on page 9. Note: Property names and values are case-sensitive. AllowSelfSignedCert Default Value Data Type Required Integer 0 No Description This property specifies whether the driver allows the server to use self-signed SSL certificates. l 1: The driver allows self-signed certificates. l 0: The driver does not allow self-signed certificates. Note: This property is applicable only when SSL connections are enabled. AsyncExecPollInterval Default Value Data Type Required Integer 10 No Description The time in milliseconds between each poll for the asynchronous query execution status. "Asynchronous" refers to the fact that the RPC call used to execute a query against Impala is asynchronous. It does not mean that JDBC asynchronous operations are supported. AuthMech Default Value Data Type 0 84 | Cloudera JDBC Driver for Impala Required Integer No Driver Configuration Options Description The authentication mechanism to use. Set the property to one of the following values: l 0 for No Authentication. l 1 for Kerberos. l 2 for User Name. l 3 for User Name And Password. CAIssuedCertsMismatch Default Value Data Type Required Integer 0 No Description This property specifies whether the driver requires the name of the CA-issued SSL certificate to match the host name of the Impala server. l 0: The driver requires the names to match. l 1: The driver allows the names to mismatch. Note: This property is applicable only when SSL connections are enabled. CatalogSchemaSwitch Default Value Data Type Required Integer 0 No Description This property specifies whether the driver treats Impala catalogs as schemas or as catalogs. l 1: The driver treats Impala catalogs as schemas as a restriction for filtering. l 0: Impala catalogs are treated as catalogs, and Impala schemas are treated as schemas. DefaultStringColumnLength Default Value 255 Data Type Required Integer No Cloudera JDBC Driver for Impala | 85 Driver Configuration Options Description The maximum number of characters that can be contained in STRING columns. The range of DefaultStringColumnLength is 0 to 32767. By default, the columns metadata for Impala does not specify a maximum data length for STRING columns. DelegationUID Default Value Data Type None Required String No Description Use this option to delegate all operations against Impala to a user that is different than the authenticated user for the connection. KrbAuthType Default Value Data Type 0 Required Integer No Description This property specifies how the driver obtains the Subject for Kerberos authentication. l 0: The driver automatically detects which method to use for obtaining the Subject: 1. First, the driver tries to obtain the Subject from the current thread's inherited AccessControlContext. If the AccessControlContext contains multiple Subjects, the driver uses the most recent Subject. 2. If the first method does not work, then the driver checks the java.security.auth.login.config system property for a JAAS configuration. If a JAAS configuration is specified, the driver uses that information to create a LoginContext and then uses the Subject associated with it. 3. If the second method does not work, then the driver checks the KRB5_CONFIG and KRB5CCNAME system environment variables for a Kerberos ticket cache. The driver uses the information from the cache to create a LoginContext and then uses the Subject associated with it. l l 1: The driver checks the java.security.auth.login.config system property for a JAAS configuration. If a JAAS configuration is specified, the driver uses that information to create a LoginContext and then uses the Subject associated with it. 2: The driver checks the KRB5_CONFIG and KRB5CCNAME system environment variables for a Kerberos ticket cache. The driver uses the information from the cache to create a LoginContext and then uses the Subject associated with it. 86 | Cloudera JDBC Driver for Impala Driver Configuration Options KrbHostFQDN Default Value Data Type None Required String Yes, if AuthMech=1. Description The fully qualified domain name of the Impala host. KrbRealm Default Value Data Type Depends on your Kerberos configuration Required String No Description The realm of the Impala host. If your Kerberos configuration already defines the realm of the Impala host as the default realm, then you do not need to configure this property. KrbServiceName Default Value Data Type None Required String Yes, if AuthMech=1. Description The Kerberos service principal name of the Impala server. LogLevel Default Value Data Type 0 Required Integer No Description Use this property to enable or disable logging in the driver and to specify the amount of detail included in log files. Cloudera JDBC Driver for Impala | 87 Driver Configuration Options Important: Only enable logging long enough to capture an issue. Logging decreases performance and can consume a large quantity of disk space. Set the property to one of the following numbers: l l l l l l l 0: Disable all logging. 1: Enable logging on the FATAL level, which logs very severe error events that will lead the driver to abort. 2: Enable logging on the ERROR level, which logs error events that might still allow the driver to continue running. 3: Enable logging on the WARNING level, which logs events that might result in an error if action is not taken. 4: Enable logging on the INFO level, which logs general information that describes the progress of the driver. 5: Enable logging on the DEBUG level, which logs detailed information that is useful for debugging the driver. 6: Enable logging on the TRACE level, which logs all driver activity. When logging is enabled, the driver produces the following log files in the location specified in the LogPath property: l l An ImpalaJDBC_driver.log file that logs driver activity that is not specific to a connection. An Impala_connection_[Number].log file for each connection made to the database, where [Number] is a number that distinguishes each log file from the others. This file logs driver activity that is specific to the connection. If the LogPath value is invalid, then the driver sends the logged information to the standard output stream (System.out). LogPath Default Value Data Type The current working directory Required String No Description The full path to the folder where the driver saves log files when logging is enabled. 88 | Cloudera JDBC Driver for Impala Driver Configuration Options LowerCaseResultSetColumnName Default Value Data Type Required Integer 1 No Description This property specifies the letter case that the driver uses when returning the column name aliases in the ResultSetMetadata. l l 1: The column name aliases in the ResultSetMetadata are returned in lower-case characters, matching the server-side behavior. 0: The column name aliases are returned in the same letter case as specified in the query. OptimizedInsert Default Value Data Type Required Integer 1 No Description This property specifies whether the driver tries to optimize INSERT statements by bypassing translation. Each time the driver translates an INSERT statement, it executes the DESCRIBE command to identify the data types of the columns that it is inserting data into. These additional commands consume resources and might reduce driver performance. l l 1: The driver tries to optimize INSERT statements by bypassing translation and using other methods to identify column types. 0: The driver does not attempt the optimization, and translates INSERT statements normally. Note: If the optimization fails, the driver falls back to translating INSERT statements normally. This additional overhead might further reduce driver performance. PreparedMetaLimitZero Default Value Data Type 1 Required Integer No Cloudera JDBC Driver for Impala | 89 Driver Configuration Options Description This property specifies whether the PreparedStatement.getMetadata() call will request metadata from the server with LIMIT 0, increasing performance. l 1: The PreparedStatement.getMetadata() call uses LIMIT 0. l 0: The PreparedStatement.getMetadata() call does not use LIMIT 0. PWD Default Value Data Type None Required String Yes, if AuthMech=3. Description The password corresponding to the user name that you provided using the property "UID" on page 93. RowsFetchedPerBlock Default Value Data Type Required Integer 10000 No Description The maximum number of rows that a query returns at a time. Any positive 32-bit integer is a valid value, but testing has shown that performance gains are marginal beyond the default value of 10000 rows. SocketTimeout Default Value Data Type 30 Required Integer No Description The number of seconds after which Impala closes the connection with the client application if the connection is idle. When this property is set to 0, idle connections are not closed. 90 | Cloudera JDBC Driver for Impala Driver Configuration Options SSL Default Value Data Type Required Integer 0 No Description This property specifies whether the driver communicates with the Impala server through an SSLenabled socket. l 1: The driver connects to SSL-enabled sockets. l 0: The driver does not connect to SSL-enabled sockets. Note: SSL is configured independently of authentication. When authentication and SSL are both enabled, the driver performs the specified authentication method over an SSL connection. SSLKeyStore Default Value Data Type None Required String No Description The full path of the Java KeyStore containing the server certificate for one-way SSL authentication. See also the property "SSLKeyStorePwd" on page 91. Note: The Cloudera JDBC Driver for Impala accepts TrustStores and KeyStores for one-way SSL authentication. See also the property "SSLTrustStore" on page 92. SSLKeyStorePwd Default Value None Data Type Required Integer Yes, if you are using a KeyStore for connecting over SSL. Cloudera JDBC Driver for Impala | 91 Driver Configuration Options Description The password for accessing the Java KeyStore that you specified using the property "SSLKeyStore" on page 91. SSLTrustStore Default Value Data Type jssecacerts, if it exists. Required String No If jssecacerts does not exist, then cacerts is used. The default location of cacerts is jre\lib\security\. Description The full path of the Java TrustStore containing the server certificate for one-way SSL authentication. See also the property "SSLTrustStorePwd" on page 92. Note: The Cloudera JDBC Driver for Impala accepts TrustStores and KeyStores for one-way SSL authentication. See also the property "SSLKeyStore" on page 91. SSLTrustStorePwd Default Value Data Type None Required String Yes, if using a TrustStore Description The password for accessing the Java TrustStore that you specified using the property "SSLTrustStore" on page 92. StripCatalogName Default Value Data Type 1 92 | Cloudera JDBC Driver for Impala Required Integer No Driver Configuration Options Description This property specifies whether the driver removes catalog names from query statements if translation fails or if the UseNativeQuery property is set to 1. l l 1: If query translation fails or if the UseNativeQuery property is set to 1, then the driver removes catalog names from the query statement. 0: The driver does not remove catalog names from query statements. SupportTimeOnlyTimestamp Default Value Data Type Required Integer 1 No Description This property specifies whether the driver supports TIMESTAMP data that only contains a time value. l l 1: The driver supports TIMESTAMP data that only contains a time value. 0: The driver returns an error when working with TIMESTAMP data that only contains a time value. UID Default Value Data Type Required String anonymous Yes, if AuthMech=3. Description The user name that you use to access the Impala server. UseNativeQuery Default Value Data Type 0 Required Integer No Description This property specifies whether the driver transforms the queries emitted by applications. l l 1: The driver does not transform the queries emitted by applications, so the native query is used. 0: The driver transforms the queries emitted by applications and converts them into an equivalent form in Impala SQL. Cloudera JDBC Driver for Impala | 93 Driver Configuration Options Note: If the application is Impala-aware and already emits Impala SQL, then enable this option to avoid the extra overhead of query transformation. UseSasl Default Value Data Type 1 Required Integer No Description This property indicates if SASL is used in conjunction with the User Name and Password Authentication Mechanism (AuthMech=3). 0: No SASL authentication is used. User credentials are still passed to the server for services such as Sentry. 1: SASL authentication is used. 94 | Cloudera JDBC Driver for Impala Contact Us Contact Us If you are having difficulties using the driver, our Community Forum may have your solution. In addition to providing user to user support, our forums are a great place to share your questions, comments, and feature requests with us. If you are a Subscription customer you may also use the Cloudera Support Portal to search the Knowledge Base or file a Case. Important: To help us assist you, prior to contacting Cloudera Support please prepare a detailed summary of the client and server environment including operating system version, patch level, and configuration Cloudera JDBC Driver for Impala | 95
* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project
advertising