Apache Drill 0.9.0 Release Notes
It has been about a month since the release of Drill 0.8, which included more than 240 improvements. Today we’re happy to announce the availability of Drill 0.9, providing additional enhancements and bug fixes. In fact, this release includes 200 resolved JIRAs. Some of the noteworthy features in Drill 0.9 are:
- Authentication (DRILL-2674). Drill now supports username/password authentication through the Java and C++ clients, as well as JDBC and ODBC. On the server-side, Drill leverages Linux PAM to securely validate the credentials. Users can choose to use an external user directory such as Active Directory or LDAP. To enable authentication, set the
security.user.auth
option indrill-override.conf
. - Impersonation (DRILL-2363). Queries now execute and access resources using the identity of the user who submitted the query. Previously, all queries would run as the same user (eg,
drill
). With the new impersonation capability, the query will fail if the submitting user does not have permission to read the requested file(s) in the distributed file system. To enable impersonation, set thedrill.exec.impersonation
option indrill-override.conf
. - Ownership chaining. Drill now allows views with different owners to be chained. This represents a very flexible access control solution. For example, an administrator with access to raw, sensitive data could create a view called
masked
which would expose only a subset of the data to other users. The administrator would enable users to read themasked
view but not the raw data. Note that Drill provides an optionmax_chained_user_hops
that specifies how many ownership changed are allowed in a chain, thereby providing administrators (or data stewards) more control over sharing of data. - MongoDB authentication (DRILL-1502). Drill can now connect to a MongoDB cluster that requires authentication.
- Extended JSON datatypes. Our friends at MongoDB invented extended JSON - a set of extensions to the JSON format for supporting additional data types. We decided to embrace extended JSON in Drill. For example, standard JSON doesn’t have a time type, so a time could be represented as either a string or a number:
{"foo": "19:20:30.450Z"}
is just a string. With extended JSON, the$time
qualifier can be used to specify thatfoo
is a time{"foo": {"$time": "19:20:30.450Z"}}
. We now support a number of qualifiers including$bin
,$date
,$time
,$interval
,$numberLong
and$dateDay
(see the example). We’re in the process of adding some additional qualifiers to make sure that all of MongoDB’s extended types are supported (this is particularly important when querying data in MongoDB). - Avro support (DRILL-1512). Drill can now read Avro files. This patch was contributed by Andrew Selden at Elastic.co (formerly known as Elasticsearch).
- Improved error messages (DRILL-2675 and more). It can be challenging for a complex distributed system like Drill to translate low-level internal conditions into actionable messages to the user. This release includes several enhancements that enable Drill to accomplish just that in a variety of cases.
- Parquet and Calcite enhancements (DRILL-1410 and DRILL-1384). Drill isn’t a traditional query engine - it’s the first analytical query engine with a JSON data model. This has required us to enhance Parquet (our columnar format) and Calcite (our SQL parser). These enhancements have now been contributed back to those projects, and Drill is using the latest versions which include these enhancements.
-
New sys tables for memory and thread information (DRILL-2275). Drill includes two new
sys
tables that provide real-time metrics about memory utilization and threads on each of the nodes in the cluster. You can run a simpleSELECT *
to see what information is available:SELECT * FROM sys.drillmemory; SELECT * FROM sys.drillbitthreads;
- Support for very wide tables (DRILL-2739). Drill previously had some issues with tables that had more than 4095 colums. This limitation has been addressed.
You can now download Drill 0.9. As always, you can check out the official release notes for more details.
We’re gearing up for Drill’s 1.0 release later this month. Stay tuned!