This project has retired. For details please refer to its Attic page.
Lens –

All Apache Lens releases

Below table captures releases, release documentation, their compatibility and tools provided for incompatible changes.

Release version Major features Release documentation Release Notes Download Incompatibilities More Info
2.5.0-beta Support for multiple instances of a driver, REST API enhancements, Derived cube validation, Per-queue driver max launched queries constraint, New error codes for Hive and JDBC Driver, Lens CLI improvements, Query result retention policy, UI Enhancements, Code cleanup and refactor, Doc/javadoc improvements, Bug fixes 2.5.x docs 2.5 release notes Download 2.5.x-incompatibilities -
2.4.0-beta JDK8 support, new web client, Saved Query and Parameterization, Support flattening of columns selected through bridge-tables(many-to-many relationships), column name mapping for columns in underlying storage tables, Enhancements cube.xsd and jdbc driver, Improvements in Error codes, Doc improvements, bug fixes 2.4.x docs 2.4 release notes Download 2.4.x-incompatibilities -
2.3.0-beta Per Query Logs, Server side XML validation, File size in query result, File name suggestions in CLI, Phase 1 Query rewriter, Elastic Search driver, Query launching constraints, Update partition api, Lens Service Health check, Doc/javadoc improvements, Code cleanup, bug fixes 2.3.x docs 2.3 release notes Download 2.3.x-incompatibilities -
2.2.0-beta-incubating CLI Improvements, Support for multiple expressions and and union queries, More descriptive error codes, Zeppelin integration, Code cleanup 2.2.x-incubating docs 2.2 release notes Download 2.2.x-incompatibilities -
2.1.0-beta-incubating Estimate api, Partition timeline, DB resources, Timers on REST api 2.1.x-incubating docs 2.1 release notes Download 2.1.x-incompatibilities -
2.0.1-beta-incubating First release in Apache 2.0.x-incubating docs 2.0 release notes Download - -


Binary distribution of the release does not include dependency org.acplt:oncrpc:jar:1.0.7, as its licensing (LGPL) is not in compliance with Apache licensing which is required for ganglia metrics reporting. If user is interested in ganglia metrics reporting, the jar needs to be downloaded and used.


2.5.x from 2.4.x

  • LENS-817: Metadata class information is no longer persisted in DB due to redundancy. The 'metadataclass' column is removed from finished_queries table.
  • LENS-735: TableReferences can not be used to define reference dim-attributes. Now, reference dim-attribute should be defined as chained column only.
  • LENS-933: Driver query pre-submit hook can throw LensException now.
  • LENS-920: All REST APIs will work with both application/xml and application/json accept headers. All the name="type" specification in cube xsd is changed to name="_type". This makes measure type, dim_attribute type, expression type and column type fields to be specified as "_type". REST API for creating fact and dimtable is changed to pass sessionid as query param instead of multi-form data. Also, org.apache.lens.api.result.QueryCostTo.type is renamed to org.apache.lens.api.result.QueryCostTo.costType.
  • LENS-123: Multiple different instances of same driver class can be loaded. Driver config file location has changed. For e.g. hivedriver-site.xml should be present in $LENS_HOME/server/conf/drivers/hive/hive1 directory.

2.4.x from 2.3.x

  • LENS-187: Moved all errors from inmobi hive to lens. All errors will be having same error code but all exceptions are mapped to LensException instead of HiveException, SemanticException.
  • LENS-446: Removed all server params from session and driver configurations. Earlier, all server params was passed to drivers and showing through session api. We can not see anymore server side properties from session params.
  • LENS-224: Driver class name also will be stored for finished queries. This will be an additional column(driverclass) in finished_queries table.
  • LENS-693: Purges the finished queries to DB periodically. Added a new config property lens.server.querypurger.sleep.interval for configuring purge interval. No more depends on number of finished queries to purge the finished queries to DB.
  • LENS-734: All query output files are generated through HadoopFileFormatter and ZipFileFormatter will be having query name in output file name. Earlier, query output file does not contain query name in the output file
  • LENS-737: Give single error with LensMultiException to user. Earlier, we used give Internal server error to users as multiple drivers gives different errors.
  • LENS-774: Fixed spelling mistake in lens.server.session.expiry.service.interval.secs property. Earlier, file and lensserver-default.xml are having different property name because of spelling error. Due to that we were unable to override lens.server.session.expiry.service.interval.secs property.

2.3.x from 2.2.x

  • LENS-681 : Passing a malformed xml doesn't succeed anymore.
  • LENS-666 : Log4j to Logback migration: files are not used anymore, use logback.xml for specifying loggers.
  • LENS-700 : Syntax and semantic errors in query no longer generate a query id, they fail at submission itself
  • LENS-686 : Adding same partition will fail if the partition is already added. Adding multiple partitions gives succeess or partial result depending on whether all the partitions were added or not.
  • LENS-630 : Cost of a query on Hive Driver is not a constant 1 now. It now reflects the resource cost based on partitions chosen for the query.
  • LENS-650 : Pre submit hook is separate from User Config Loader. User Config Loader is no longer an abstract class.
  • LENS-651 : In /resultset api, file size is added. File size and the already existing field num-rows are only populated if needed. Default value is no more -1, it's null(unpopulated). Finished queries table has one more column now, so existing tables need to be updated. The following sql should work: ALTER TABLE finished_queries ADD filesize bigint AFTER rows

2.2.x from 2.1.x

  • LENS-484 : Fact table weight is a mandatory field now, for creating facts from the web interface. Please refer to cube xsd for further details.
  • LENS-553 : Java compilation version moved to Java 7 from Java 6.
  • LENS-546 : Parameter names in Lens CLI will have _ (underscore) instead of - (hyphen) as a separator
  • LENS-256 : Use explicit keywords for different parameter names in Lens-CLI
  • LENS-486 : More structured and informative error responses for the REST interface
  • LENS-487 : Consistent error response display in Lens-CLI. The output shown is different than the previous version.
  • LENS-550 : Removed support for multi table select in cube queries
  • LENS-563 : There was a length limitation of the property value of string that specified 'valid' column list for a fact table. This change has fixed the length limitation by allowing users to set a size parameter, and multiple numerically indexed keys for specifying the bigger column list.

2.1.x from 2.0.x

  • LENS-437 : Removed counts and weights from QueryPlan. The values are no longer available. If any usecase requires these values, it requires a feature addition.
  • LENS-338 : REST api path changed from /facts/{factName}/storages/{storage}/partitions to /facts/{factName}/storages/{storage}/partition and /dimtables/{dimTableName}/storages/{storage}/partitions to /dimtables/{dimTableName}/storages/{storage}/partition for adding single partition. If single partition is getting registered with old path, they need to change to use new path.
  • LENS-281 : Lens server understands data(partition) availability through partition timeline instead of querying metastore. When server is brought up for the first time after this feature, partition timeline will built. If it needs to be updated again, table properties on storage table need to be modified by setting cube.storagetable.partition.timeline.cache.present to false. All add and drop partitions should go through Lens server to keep timeline updated.
  • LENS-327 : Adds "QueryCost estimate(AbstractQueryContext qctx) throws LensException;" in LensDriver interface; ESTIMATE is added in SubmitOp enum. If there is a driver implementation, the new api needs to be implemented.
  • LENS-441 : GET on /cubes/{cubeName}/facts returns StringList instead of ListXFactTable. For getting the XFactTable corresponding to the name returned in StringList, user need to use GET on /facts/{factName}.
  • LENS-275 : Session not found error code is 410, instead of 404