You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@zeppelin.apache.org by pr...@apache.org on 2016/09/08 09:01:13 UTC
zeppelin git commit: ZEPPELIN-1326: make profile to select dependency
of hadoop-common for JDBC interpreter
Repository: zeppelin
Updated Branches:
refs/heads/master 3db819abf -> c88010fd0
ZEPPELIN-1326: make profile to select dependency of hadoop-common for JDBC interpreter
### What is this PR for?
Extension of https://github.com/apache/zeppelin/pull/1353
java.lang.ClassNotFoundException: org.apache.hadoop.security.UserGroupInformation$AuthenticationMethod error on using jdbc interpreter after #1205
```
java.lang.ClassNotFoundException: org.apache.hadoop.security.UserGroupInformation$AuthenticationMethod
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at org.apache.zeppelin.jdbc.security.JDBCSecurityImpl.getAuthtype(JDBCSecurityImpl.java:71)
at org.apache.zeppelin.jdbc.JDBCInterpreter.getConnection(JDBCInterpreter.java:217)
at org.apache.zeppelin.jdbc.JDBCInterpreter.getStatement(JDBCInterpreter.java:275)
at org.apache.zeppelin.jdbc.JDBCInterpreter.executeSql(JDBCInterpreter.java:346)
at org.apache.zeppelin.jdbc.JDBCInterpreter.interpret(JDBCInterpreter.java:452)
at org.apache.zeppelin.interpreter.LazyOpenInterpreter.interpret(LazyOpenInterpreter.java:94)
at org.apache.zeppelin.interpreter.remote.RemoteInterpreterServer$InterpretJob.jobRun(RemoteInterpreterServer.java:383)
at org.apache.zeppelin.scheduler.Job.run(Job.java:176)
at org.apache.zeppelin.scheduler.FIFOScheduler$1.run(FIFOScheduler.java:139)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
```
Workaround is adding "org.apache.hadoop:hadoop-common:2.7.2" in the Dependencies section of interpreter setting on GUI. But jdbc interpreter supposed to work without asking user hadoop-common dependency.
### What type of PR is it?
[Bug Fix]
### What is the Jira issue?
* [ZEPPELIN-1326](https://issues.apache.org/jira/browse/ZEPPELIN-1326)
### How should this be tested?
On running this (JDBC) interpreter, the above stack trace should not come.
### Screenshots (if appropriate)
### Questions:
* Does the licenses files need update? n/a
* Is there breaking changes for older versions? n/a
* Does this needs documentation? n/a
Author: Prabhjyot Singh <pr...@gmail.com>
Closes #1380 from prabhjyotsingh/ZEPPELIN-1326 and squashes the following commits:
903796d [Prabhjyot Singh] revert move profile hadoop-* to root level pom
033da7b [Prabhjyot Singh] check if auth type is present in key
f64dbf0 [Prabhjyot Singh] make <scope>provided</scope>
0e0016a [Prabhjyot Singh] move profile hadoop-* to root level pom
f061da0 [Prabhjyot Singh] ZEPPELIN-1326: make profile to select dependency for hadoop-common
Project: http://git-wip-us.apache.org/repos/asf/zeppelin/repo
Commit: http://git-wip-us.apache.org/repos/asf/zeppelin/commit/c88010fd
Tree: http://git-wip-us.apache.org/repos/asf/zeppelin/tree/c88010fd
Diff: http://git-wip-us.apache.org/repos/asf/zeppelin/diff/c88010fd
Branch: refs/heads/master
Commit: c88010fd0a744d026b75d02bc62bc6dc690f0f9a
Parents: 3db819a
Author: Prabhjyot Singh <pr...@gmail.com>
Authored: Mon Aug 29 16:20:40 2016 +0530
Committer: Prabhjyot Singh <pr...@gmail.com>
Committed: Thu Sep 8 14:30:59 2016 +0530
----------------------------------------------------------------------
.../apache/zeppelin/jdbc/JDBCInterpreter.java | 83 ++++++++++----------
.../jdbc/security/JDBCSecurityImpl.java | 1 -
2 files changed, 43 insertions(+), 41 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/zeppelin/blob/c88010fd/jdbc/src/main/java/org/apache/zeppelin/jdbc/JDBCInterpreter.java
----------------------------------------------------------------------
diff --git a/jdbc/src/main/java/org/apache/zeppelin/jdbc/JDBCInterpreter.java b/jdbc/src/main/java/org/apache/zeppelin/jdbc/JDBCInterpreter.java
index 68a1ce4..bc473ea 100644
--- a/jdbc/src/main/java/org/apache/zeppelin/jdbc/JDBCInterpreter.java
+++ b/jdbc/src/main/java/org/apache/zeppelin/jdbc/JDBCInterpreter.java
@@ -27,7 +27,7 @@ import java.sql.SQLException;
import java.sql.Statement;
import java.util.*;
-import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang.StringUtils;
import org.apache.hadoop.security.UserGroupInformation;
import org.apache.zeppelin.interpreter.Interpreter;
import org.apache.zeppelin.interpreter.InterpreterContext;
@@ -168,7 +168,7 @@ public class JDBCInterpreter extends Interpreter {
logger.debug("propertiesMap: {}", propertiesMap);
- if (!StringUtils.isAnyEmpty(property.getProperty("zeppelin.jdbc.auth.type"))) {
+ if (!StringUtils.isEmpty(property.getProperty("zeppelin.jdbc.auth.type"))) {
JDBCSecurityImpl.createSecureConfiguration(property);
}
for (String propertyKey : propertiesMap.keySet()) {
@@ -215,49 +215,52 @@ public class JDBCInterpreter extends Interpreter {
Class.forName(properties.getProperty(DRIVER_KEY));
final String url = properties.getProperty(URL_KEY);
- UserGroupInformation.AuthenticationMethod authType = JDBCSecurityImpl.getAuthtype(property);
- switch (authType) {
- case KERBEROS:
- if (user == null) {
- connection = DriverManager.getConnection(url, properties);
- } else {
- if ("hive".equalsIgnoreCase(propertyKey)) {
- connection = DriverManager.getConnection(url + ";hive.server2.proxy.user=" + user,
- properties);
+ if (StringUtils.isEmpty(property.getProperty("zeppelin.jdbc.auth.type"))) {
+ connection = DriverManager.getConnection(url, properties);
+ } else {
+ UserGroupInformation.AuthenticationMethod authType = JDBCSecurityImpl.getAuthtype(property);
+ switch (authType) {
+ case KERBEROS:
+ if (user == null) {
+ connection = DriverManager.getConnection(url, properties);
} else {
- UserGroupInformation ugi = null;
- try {
- ugi = UserGroupInformation.createProxyUser(user,
- UserGroupInformation.getCurrentUser());
- } catch (Exception e) {
- logger.error("Error in createProxyUser", e);
- StringBuilder stringBuilder = new StringBuilder();
- stringBuilder.append(e.getMessage()).append("\n");
- stringBuilder.append(e.getCause());
- throw new InterpreterException(stringBuilder.toString());
- }
- try {
- connection = ugi.doAs(new PrivilegedExceptionAction<Connection>() {
- @Override
- public Connection run() throws Exception {
- return DriverManager.getConnection(url, properties);
- }
- });
- } catch (Exception e) {
- logger.error("Error in doAs", e);
- StringBuilder stringBuilder = new StringBuilder();
- stringBuilder.append(e.getMessage()).append("\n");
- stringBuilder.append(e.getCause());
- throw new InterpreterException(stringBuilder.toString());
+ if ("hive".equalsIgnoreCase(propertyKey)) {
+ connection = DriverManager.getConnection(url + ";hive.server2.proxy.user=" + user,
+ properties);
+ } else {
+ UserGroupInformation ugi = null;
+ try {
+ ugi = UserGroupInformation.createProxyUser(user,
+ UserGroupInformation.getCurrentUser());
+ } catch (Exception e) {
+ logger.error("Error in createProxyUser", e);
+ StringBuilder stringBuilder = new StringBuilder();
+ stringBuilder.append(e.getMessage()).append("\n");
+ stringBuilder.append(e.getCause());
+ throw new InterpreterException(stringBuilder.toString());
+ }
+ try {
+ connection = ugi.doAs(new PrivilegedExceptionAction<Connection>() {
+ @Override
+ public Connection run() throws Exception {
+ return DriverManager.getConnection(url, properties);
+ }
+ });
+ } catch (Exception e) {
+ logger.error("Error in doAs", e);
+ StringBuilder stringBuilder = new StringBuilder();
+ stringBuilder.append(e.getMessage()).append("\n");
+ stringBuilder.append(e.getCause());
+ throw new InterpreterException(stringBuilder.toString());
+ }
}
}
- }
- break;
+ break;
- default:
- connection = DriverManager.getConnection(url, properties);
+ default:
+ connection = DriverManager.getConnection(url, properties);
+ }
}
-
}
propertyKeySqlCompleterMap.put(propertyKey, createSqlCompleter(connection));
return connection;
http://git-wip-us.apache.org/repos/asf/zeppelin/blob/c88010fd/jdbc/src/main/java/org/apache/zeppelin/jdbc/security/JDBCSecurityImpl.java
----------------------------------------------------------------------
diff --git a/jdbc/src/main/java/org/apache/zeppelin/jdbc/security/JDBCSecurityImpl.java b/jdbc/src/main/java/org/apache/zeppelin/jdbc/security/JDBCSecurityImpl.java
index 8cc2735..32a7990 100644
--- a/jdbc/src/main/java/org/apache/zeppelin/jdbc/security/JDBCSecurityImpl.java
+++ b/jdbc/src/main/java/org/apache/zeppelin/jdbc/security/JDBCSecurityImpl.java
@@ -18,7 +18,6 @@ package org.apache.zeppelin.jdbc.security;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.security.UserGroupInformation;
-import org.apache.zeppelin.jdbc.SqlCompleter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;