-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/39842/
-----------------------------------------------------------
(Updated Nov. 20, 2015, 11:27 a.m.)
Review request for lens, Amareshwari Sriramadasu and Rajat Khandelwal.
Changes
-------
Added Documentation and test case. Removed redundant file (.gitignore)
Bugs: LENS-123
https://issues.apache.org/jira/browse/LENS-123
Repository: lens
Description
-------
Ability to load multiple drivers on lens server.
As of now only one driver instance of each type (hive,jdbc,es,etc) can be
loaded by lens server. Hence lens can not support for example, two jdbc
instances, one for MySql and one for Vertica or just two different MySQl
deployments. This can be a big limitation for some deployments.
Made below changes in fix
1. Based on the approaches discussed in JIRA(LENS-123), the below folder
structure was picked. (Please refer to the discussion on JIRA if required -
last few comments )
-conf
--drivers
---hive
----driver1
-----hivedriver-site.xml
----driver2
-----hivedriver-site.xml
---jdbc
----driver1
-----jdbcdriver-site.xml
----driver2
-----jdbcdriver-site.xml
Note: drivers configuration is read from "drivers" directory under conf
location. Conf loaction is set while starting the server as -Dconfig.location =
"<conf path>"
2. Added an abstract class
"org.apache.lens.server.api.driver.AbstractLensDriver". This has common
implemenation for getting lens driver's fully qualified name and some methods
for getting driver specific resource paths. All existing driver implementations
extend this class. In future, we can also add common functionality here(if
required) without affecting existing driver implementations that extend this
abstract class.
3. Updated driver interface
-configure method now takes driver name and type configuration parameters.
-added getFullyQualifiedName() method to identify the driver uniquely.
4. Value of lens.server.drivers property in lens-site.xml (and
default-lens-site) updated to include driver type and driver class name
(earlier only driver class name was present).
<value>hive:org.apache.lens.driver.hive.HiveDriver,jdbc:org.apache.lens.driver.jdbc.JDBCDriver</value>
5. Updated LensServerDAO to use driver qualified name instead of driver class
name. The table column name is chnaged to drivername form driverclass
6. The driver instance was earlier referred to by its class name
(Example:org.apache.lens.driver.hive.HiveDriver) everywhere in code. This is
now changed to driver's fully qualified name which has the driver type and
driver name (Example :hive/hive1)
7. All metrics were also relying on driver class name. This is also changed to
driver's fully qualified name.
8. Updated driver folder struture for test cases and lens server build (as per
point1).
9. Query execution service will fail to start if no drivers are found. (This is
a change from previous flow . We can discuss this if req.)
Pending ( will upload this soon)
1. Adding test cases to test multiple drivers
2. updating documentation
Future Enhancements(that can be taken up as a separate JIRA)
1.Multiple versions of a datasource to be supported ( say Hive and Hive on
spark use different versions of Hive. This will not work as of now as we have
common Hive jars as part of war classpath. We need to have driver specific jars
which can have different version. For this, the jars and other hive version
specific resources should be picked from driver's folder by a separate class
loader).
Diffs (updated)
-----
lens-api/src/main/java/org/apache/lens/api/query/LensPreparedQuery.java
9595ce9
lens-api/src/main/java/org/apache/lens/api/query/LensQuery.java 204ecee
lens-cli/src/main/java/org/apache/lens/cli/commands/LensQueryCommands.java
83b919b
lens-cli/src/test/resources/drivers/hive/hive1/hivedriver-site.xml
PRE-CREATION
lens-client/src/main/java/org/apache/lens/client/LensStatement.java 0a511f0
lens-client/src/test/resources/drivers/hive/hive1/hivedriver-site.xml
PRE-CREATION
lens-cube/src/test/java/org/apache/lens/driver/cube/TestMinCostSelector.java
72f1497
lens-driver-es/src/main/java/org/apache/lens/driver/es/ESDriver.java 14d9f99
lens-driver-es/src/test/java/org/apache/lens/driver/es/ESDriverTest.java
f453416
lens-driver-hive/src/main/java/org/apache/lens/driver/hive/HiveDriver.java
c96ef20
lens-driver-hive/src/test/java/org/apache/lens/driver/hive/TestHiveDriver.java
fc57c94
lens-driver-hive/src/test/java/org/apache/lens/driver/hive/TestRemoteHiveDriver.java
98edc28
lens-driver-hive/src/test/resources/drivers/hive/hive1/hivedriver-site.xml
PRE-CREATION
lens-driver-hive/src/test/resources/hivedriver-site.xml 613938d
lens-driver-jdbc/src/main/java/org/apache/lens/driver/jdbc/JDBCDriver.java
a8b980f
lens-driver-jdbc/src/test/java/org/apache/lens/driver/jdbc/TestColumnarSQLRewriter.java
7772d16
lens-driver-jdbc/src/test/java/org/apache/lens/driver/jdbc/TestJDBCFinal.java
053e20d
lens-driver-jdbc/src/test/java/org/apache/lens/driver/jdbc/TestJdbcDriver.java
425bd6f
lens-driver-jdbc/src/test/resources/drivers/jdbc/jdbc1/jdbcdriver-site.xml
PRE-CREATION
lens-driver-jdbc/src/test/resources/jdbcdriver-site.xml 1202074
lens-ml-lib/src/test/resources/drivers/hive/hive1/hivedriver-site.xml
PRE-CREATION
lens-ml-lib/src/test/resources/lens-site.xml 3d5dbef
lens-query-lib/src/test/java/org/apache/lens/lib/query/TestAbstractFileFormatter.java
40e1cdc
lens-server-api/src/main/java/org/apache/lens/server/api/LensConfConstants.java
7ee0749
lens-server-api/src/main/java/org/apache/lens/server/api/driver/AbstractLensDriver.java
PRE-CREATION
lens-server-api/src/main/java/org/apache/lens/server/api/driver/LensDriver.java
a5a60d7
lens-server-api/src/main/java/org/apache/lens/server/api/query/AbstractQueryContext.java
0c980a2
lens-server-api/src/main/java/org/apache/lens/server/api/query/DriverSelectorQueryContext.java
feac938
lens-server-api/src/main/java/org/apache/lens/server/api/query/FinishedLensQuery.java
89053aa
lens-server-api/src/main/java/org/apache/lens/server/api/query/PreparedQueryContext.java
b6f669b
lens-server-api/src/main/java/org/apache/lens/server/api/query/QueryContext.java
9b491d1
lens-server-api/src/test/java/org/apache/lens/server/api/driver/MockDriver.java
2d86589
lens-server-api/src/test/java/org/apache/lens/server/api/query/MockQueryContext.java
fd6b560
lens-server-api/src/test/java/org/apache/lens/server/api/query/TestAbstractQueryContext.java
e41f2f4
lens-server/src/main/java/org/apache/lens/server/query/LensServerDAO.java
b9dd286
lens-server/src/main/java/org/apache/lens/server/query/QueryExecutionServiceImpl.java
fdc8bfd
lens-server/src/main/java/org/apache/lens/server/rewrite/RewriteUtil.java
6c464fb
lens-server/src/main/resources/lensserver-default.xml 5f268cb
lens-server/src/test/java/org/apache/lens/server/LensJerseyTest.java 3dad050
lens-server/src/test/java/org/apache/lens/server/query/TestEventService.java
1dab35e
lens-server/src/test/java/org/apache/lens/server/query/TestLensDAO.java
bc1463f
lens-server/src/test/java/org/apache/lens/server/query/TestQueryService.java
c37b0ed
lens-server/src/test/java/org/apache/lens/server/rewrite/TestRewriting.java
2827b96
lens-server/src/test/resources/drivers/hive/hive1/hivedriver-site.xml
PRE-CREATION
lens-server/src/test/resources/drivers/hive/hive2/hivedriver-site.xml
PRE-CREATION
lens-server/src/test/resources/drivers/jdbc/jdbc1/jdbcdriver-site.xml
PRE-CREATION
lens-server/src/test/resources/drivers/mock/fail1/failing-query-driver-site.xml
PRE-CREATION
lens-server/src/test/resources/failing-query-driver-site.xml fee022d
lens-server/src/test/resources/hivedriver-site.xml f2aed88
lens-server/src/test/resources/jdbcdriver-site.xml 1b14f54
lens-server/src/test/resources/lens-site.xml cc887ef
src/site/apt/admin/config-server.apt 141f2b3
src/site/apt/admin/config.apt 88c1489
tools/conf-pseudo-distr/server/drivers/hive/hive1/hivedriver-site.xml
PRE-CREATION
tools/conf-pseudo-distr/server/drivers/jdbc/jdbc1/jdbcdriver-site.xml
PRE-CREATION
tools/conf-pseudo-distr/server/hivedriver-site.xml 4804356
tools/conf-pseudo-distr/server/jdbcdriver-site.xml 37540dd
tools/conf-pseudo-distr/server/lens-site.xml f43d07e
tools/conf/server/drivers/hive/hive1/hivedriver-site.xml PRE-CREATION
tools/conf/server/drivers/jdbc/jdbc1/jdbcdriver-site.xml PRE-CREATION
tools/conf/server/hivedriver-site.xml 2e8e7fa
tools/conf/server/jdbcdriver-site.xml 37540dd
tools/conf/server/lens-site.xml 2b12b83
Diff: https://reviews.apache.org/r/39842/diff/
Testing
-------
[INFO] Reactor Summary:
[INFO]
[INFO] Lens Checkstyle Rules ............................. SUCCESS [2.090s]
[INFO] Lens .............................................. SUCCESS [2.900s]
[INFO] Lens API .......................................... SUCCESS [25.172s]
[INFO] Lens API for server and extensions ................ SUCCESS [24.540s]
[INFO] Lens Cube ......................................... SUCCESS [5:17.973s]
[INFO] Lens DB storage ................................... SUCCESS [20.026s]
[INFO] Lens Query Library ................................ SUCCESS [15.835s]
[INFO] Lens Hive Driver .................................. SUCCESS [2:54.352s]
[INFO] Lens Driver for JDBC .............................. SUCCESS [39.054s]
[INFO] Lens Elastic Search Driver ........................ SUCCESS [19.714s]
[INFO] Lens Server ....................................... SUCCESS [8:17.418s]
[INFO] Lens client ....................................... SUCCESS [38.221s]
[INFO] Lens CLI .......................................... SUCCESS [56.723s]
[INFO] Lens Examples ..................................... SUCCESS [9.847s]
[INFO] Lens Ship Jars to Distributed Cache ............... SUCCESS [1.488s]
[INFO] Lens Distribution ................................. SUCCESS [9.897s]
[INFO] Lens ML Lib ....................................... SUCCESS [1:22.714s]
[INFO] Lens ML Ext Distribution .......................... SUCCESS [1.841s]
[INFO] Lens Regression ................................... SUCCESS [12.622s]
[INFO] Lens UI ........................................... SUCCESS [26.741s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 23:00.146s
[INFO] Finished at: Mon Nov 02 03:14:06 UTC 2015
[INFO] Final Memory: 198M/2037M
[INFO] ------------------------------------------------------------------------
Tested lens-examples also after making the changes.
Thanks,
Puneet Gupta