Refactoring of the code

This commit is contained in:
mahmoudelgamal 2016-08-01 10:53:12 +02:00
parent 3a2bd85298
commit 26fc59bc53
6 changed files with 50 additions and 58 deletions

View file

@ -4,6 +4,7 @@
<parent>
<artifactId>zeppelin</artifactId>
<groupId>org.apache.zeppelin</groupId>
@ -15,22 +16,26 @@
<artifactId>zeppelin-beam</artifactId>
<version>0.7.0-SNAPSHOT</version>
<repositories>
<repository>
<id>apache-beam</id>
<url>https://repository.apache.org/content/repositories/snapshots/org/apache/beam/</url>
</repository>
</repositories>
<dependencies>
<!-- <dependency> <groupId>com.google.cloud.dataflow</groupId> <artifactId>google-cloud-dataflow-java-sdk-all</artifactId>
<version>1.6.0</version> </dependency> <dependency> <groupId>org.apache.beam</groupId>
<artifactId>beam-runners-parent</artifactId> <version>0.2.0-incubating-SNAPSHOT</version>
<artifactId>beam-runners-parent</artifactId> <version>0.1.0-incubating</version>
<type>pom</type> </dependency> <dependency> <groupId>org.apache.beam</groupId>
<artifactId>beam-sdks-java-io-google-cloud-platform</artifactId> <version>0.2.0-incubating-SNAPSHOT</version>
<artifactId>beam-sdks-java-io-google-cloud-platform</artifactId> <version>0.1.0-incubating</version>
</dependency> <dependency> <groupId>org.apache.beam</groupId> <artifactId>beam-parent</artifactId>
<version>0.2.0-incubating-SNAPSHOT</version> <type>pom</type> </dependency>
<version>0.1.0-incubating</version> <type>pom</type> </dependency>
<dependency> <groupId>org.apache.beam</groupId> <artifactId>beam-runners-google-cloud-dataflow-java</artifactId>
<version>0.2.0-incubating</version> </dependency> <dependency> <groupId>org.apache.beam</groupId>
<artifactId>beam-runners-core-java</artifactId> <version>0.2.0-incubating</version>
</dependency> <dependency> <groupId>org.apache.beam</groupId> <artifactId>beam-sdks-java-core</artifactId>
<version>0.2.0-incubating-SNAPSHOT</version> </dependency> -->
<version>0.1.0-incubating</version> </dependency> -->
<!--
<dependency>
@ -187,14 +192,14 @@
<dependency>
<groupId>org.apache.beam</groupId>
<artifactId>beam-runners-parent</artifactId>
<version>0.2.0-incubating-SNAPSHOT</version>
<version>0.1.0-incubating</version>
<type>pom</type>
</dependency>
<!--
<dependency>
<groupId>org.apache.beam</groupId>
<artifactId>beam-examples-java</artifactId>
<version>0.2.0-incubating-SNAPSHOT</version>
<version>0.1.0-incubating</version>
<exclusions>
<exclusion>
@ -207,7 +212,7 @@
<dependency>
<groupId>org.apache.beam</groupId>
<artifactId>beam-runners-core-java</artifactId>
<version>0.2.0-incubating-SNAPSHOT</version>
<version>0.1.0-incubating</version>
<exclusions>
<exclusion>
<artifactId>google-http-client-jackson2</artifactId>
@ -218,13 +223,13 @@
<dependency>
<groupId>org.apache.beam</groupId>
<artifactId>beam-runners-direct-java</artifactId>
<version>0.2.0-incubating-SNAPSHOT</version>
<version>0.1.0-incubating</version>
</dependency>
<dependency>
<groupId>org.apache.beam</groupId>
<artifactId>beam-runners-flink_2.10</artifactId>
<version>0.2.0-incubating-SNAPSHOT</version>
<version>0.1.0-incubating</version>
<exclusions>
<exclusion>
@ -241,7 +246,7 @@
<dependency>
<groupId>org.apache.beam</groupId>
<artifactId>beam-runners-flink_2.10-examples</artifactId>
<version>0.2.0-incubating-SNAPSHOT</version>
<version>0.1.0-incubating</version>
<exclusions>
<exclusion>
@ -254,7 +259,7 @@
<dependency>
<groupId>org.apache.beam</groupId>
<artifactId>beam-runners-google-cloud-dataflow-java</artifactId>
<version>0.2.0-incubating-SNAPSHOT</version>
<version>0.1.0-incubating</version>
<exclusions>
<exclusion>
@ -267,7 +272,7 @@
<groupId>org.apache.beam</groupId>
<artifactId>beam-runners-spark</artifactId>
<version>0.2.0-incubating-SNAPSHOT</version>
<version>0.1.0-incubating</version>
<type>jar</type>
</dependency>
@ -289,14 +294,13 @@
-->
<!--
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>zeppelin-interpreter</artifactId>
<version>${project.version}</version>
<scope>provided</scope>
</dependency>
-->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-exec</artifactId>

View file

@ -1,6 +1,5 @@
package org.apache.zeppelin.beam;
import java.io.File;
import java.io.PrintWriter;
import java.io.StringWriter;
@ -23,18 +22,10 @@ import com.google.gson.Gson;
*/
public class BeamInterpreter extends Interpreter {
private String host = "http://localhost:8001";
private InterpreterContext context;
public BeamInterpreter(Properties property) {
super(property);
}
public static void main(String[] args) {
}
@Override
public void open() {
@ -42,16 +33,22 @@ public class BeamInterpreter extends Interpreter {
@Override
public void close() {
File dir = new File(".");
for (int i = 0; i < dir.list().length; i++) {
File f = dir.listFiles()[i];
System.out.println(f.getAbsolutePath());
if (f.getAbsolutePath().contains(".class"))
f.delete();
}
}
@Override
public InterpreterResult interpret(String st, InterpreterContext context) {
String uuid = "C" + UUID.randomUUID().toString().replace("-", "");
String className = "C" + UUID.randomUUID().toString().replace("-", "");
try {
String msg = CompileSourceInMemory.execute(uuid, st);
String msg = CompileSourceInMemory.execute(className, st);
return new InterpreterResult(InterpreterResult.Code.SUCCESS, msg);
} catch (Exception e) {
e.printStackTrace();

View file

@ -14,20 +14,17 @@ import com.thoughtworks.qdox.model.JavaClass;
import com.thoughtworks.qdox.model.JavaSource;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.PrintStream;
import java.io.PrintWriter;
import java.io.StringReader;
import java.io.StringWriter;
import java.lang.reflect.InvocationTargetException;
import java.net.URI;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.Arrays;
import java.util.List;
/**
* @author admin
* @author Mahmoud
*
*/
public class CompileSourceInMemory {
@ -39,31 +36,25 @@ public class CompileSourceInMemory {
JavaProjectBuilder builder = new JavaProjectBuilder();
JavaSource src = builder.addSource(new StringReader(code));
// List<String> imports = src.getImports();
// String importsString = "";
//
// for (int i = 0; i < imports.size(); i++) {
// importsString += "import " + imports.get(i) + ";\n";
// }
List<JavaClass> classes = src.getClasses();
String classesSt = "";
String classMain = "", classMainName = "";
String classMainName = null;
for (int i = 0; i < classes.size(); i++) {
boolean hasMain = false;
for (int j = 0; j < classes.get(i).getMethods().size(); j++) {
if (classes.get(i).getMethods().get(j).getName().equals("main")) {
classMainName = classes.get(i).getName();
hasMain = true;
break;
}
}
if (hasMain == true) {
classMain = classes.get(i).getCodeBlock() + "\n";
classMainName = classes.get(i).getName();
} else
classesSt += classes.get(i).getCodeBlock() + "\n";
if (hasMain == true)
break;
}
if (classMainName == null)
throw new Exception("There isn't any class containing Main method.");
code = code.replace(classMainName, className);
StringWriter writer = new StringWriter();
@ -71,11 +62,11 @@ public class CompileSourceInMemory {
out.println(code);
out.close();
System.out.println(writer.toString());
JavaFileObject file = new JavaSourceFromString(className, writer.toString());
Iterable<? extends JavaFileObject> compilationUnits = Arrays.asList(file);
ByteArrayOutputStream baosOut = new ByteArrayOutputStream();
@ -100,11 +91,9 @@ public class CompileSourceInMemory {
}
if (success) {
try {
URLClassLoader classLoader = URLClassLoader.newInstance(new URL[] { new File("").toURI()
.toURL() });
Class.forName(className, true, classLoader)
.getDeclaredMethod("main", new Class[] { String[].class })
.invoke(null, new Object[] { null });
Class.forName(className).getDeclaredMethod("main", new Class[] { String[].class })
.invoke(null, new Object[] { null });
System.out.flush();
System.err.flush();
@ -112,8 +101,8 @@ public class CompileSourceInMemory {
System.setOut(oldOut);
System.setErr(oldErr);
classLoader.clearAssertionStatus();
return baosOut.toString();
} catch (ClassNotFoundException e) {
e.printStackTrace(newErr);

View file

@ -24,6 +24,7 @@ cassandra org.apache.zeppelin:zeppelin-cassandra_2.11:0.6.1 Cassandr
elasticsearch org.apache.zeppelin:zeppelin-elasticsearch:0.6.1 Elasticsearch interpreter
file org.apache.zeppelin:zeppelin-file:0.6.1 HDFS file interpreter
flink org.apache.zeppelin:zeppelin-flink_2.11:0.6.1 Flink interpreter built with Scala 2.11
beam org.apache.zeppelin:zeppelin-beam:0.6.1 Beam interpreter
hbase org.apache.zeppelin:zeppelin-hbase:0.6.1 Hbase interpreter
ignite org.apache.zeppelin:zeppelin-ignite_2.11:0.6.1 Ignite interpreter built with Scala 2.11
jdbc org.apache.zeppelin:zeppelin-jdbc:0.6.1 Jdbc interpreter

View file

@ -184,13 +184,13 @@
<property>
<name>zeppelin.interpreters</name>
<value>org.apache.zeppelin.spark.SparkInterpreter,org.apache.zeppelin.spark.PySparkInterpreter,org.apache.zeppelin.rinterpreter.RRepl,org.apache.zeppelin.rinterpreter.KnitR,org.apache.zeppelin.spark.SparkRInterpreter,org.apache.zeppelin.spark.SparkSqlInterpreter,org.apache.zeppelin.spark.DepInterpreter,org.apache.zeppelin.markdown.Markdown,org.apache.zeppelin.angular.AngularInterpreter,org.apache.zeppelin.shell.ShellInterpreter,org.apache.zeppelin.file.HDFSFileInterpreter,org.apache.zeppelin.flink.FlinkInterpreter,,org.apache.zeppelin.python.PythonInterpreter,org.apache.zeppelin.lens.LensInterpreter,org.apache.zeppelin.ignite.IgniteInterpreter,org.apache.zeppelin.ignite.IgniteSqlInterpreter,org.apache.zeppelin.cassandra.CassandraInterpreter,org.apache.zeppelin.geode.GeodeOqlInterpreter,org.apache.zeppelin.postgresql.PostgreSqlInterpreter,org.apache.zeppelin.jdbc.JDBCInterpreter,org.apache.zeppelin.kylin.KylinInterpreter,org.apache.zeppelin.elasticsearch.ElasticsearchInterpreter,org.apache.zeppelin.scalding.ScaldingInterpreter,org.apache.zeppelin.alluxio.AlluxioInterpreter,org.apache.zeppelin.hbase.HbaseInterpreter,org.apache.zeppelin.livy.LivySparkInterpreter,org.apache.zeppelin.livy.LivyPySparkInterpreter,org.apache.zeppelin.livy.LivySparkRInterpreter,org.apache.zeppelin.livy.LivySparkSQLInterpreter,org.apache.zeppelin.bigquery.BigQueryInterpreter</value>
<value>org.apache.zeppelin.spark.SparkInterpreter,org.apache.zeppelin.spark.PySparkInterpreter,org.apache.zeppelin.rinterpreter.RRepl,org.apache.zeppelin.rinterpreter.KnitR,org.apache.zeppelin.spark.SparkRInterpreter,org.apache.zeppelin.spark.SparkSqlInterpreter,org.apache.zeppelin.spark.DepInterpreter,org.apache.zeppelin.markdown.Markdown,org.apache.zeppelin.angular.AngularInterpreter,org.apache.zeppelin.shell.ShellInterpreter,org.apache.zeppelin.file.HDFSFileInterpreter,org.apache.zeppelin.flink.FlinkInterpreter,,org.apache.zeppelin.python.PythonInterpreter,org.apache.zeppelin.lens.LensInterpreter,org.apache.zeppelin.ignite.IgniteInterpreter,org.apache.zeppelin.ignite.IgniteSqlInterpreter,org.apache.zeppelin.cassandra.CassandraInterpreter,org.apache.zeppelin.geode.GeodeOqlInterpreter,org.apache.zeppelin.postgresql.PostgreSqlInterpreter,org.apache.zeppelin.jdbc.JDBCInterpreter,org.apache.zeppelin.kylin.KylinInterpreter,org.apache.zeppelin.elasticsearch.ElasticsearchInterpreter,org.apache.zeppelin.scalding.ScaldingInterpreter,org.apache.zeppelin.alluxio.AlluxioInterpreter,org.apache.zeppelin.hbase.HbaseInterpreter,org.apache.zeppelin.livy.LivySparkInterpreter,org.apache.zeppelin.livy.LivyPySparkInterpreter,org.apache.zeppelin.livy.LivySparkRInterpreter,org.apache.zeppelin.livy.LivySparkSQLInterpreter,org.apache.zeppelin.bigquery.BigQueryInterpreter,org.apache.zeppelin.beam.BeamInterpreter</value>
<description>Comma separated interpreter configurations. First interpreter become a default</description>
</property>
<property>
<name>zeppelin.interpreter.group.order</name>
<value>spark,md,angular,sh,livy,alluxio,file,psql,flink,python,ignite,lens,cassandra,geode,kylin,elasticsearch,scalding,jdbc,hbase,bigquery</value>
<value>spark,md,angular,sh,livy,alluxio,file,psql,flink,python,ignite,lens,cassandra,geode,kylin,elasticsearch,scalding,jdbc,hbase,bigquery,beam</value>
<description></description>
</property>

View file

@ -529,7 +529,8 @@ public class ZeppelinConfiguration extends XMLConfiguration {
+ "org.apache.zeppelin.scalding.ScaldingInterpreter,"
+ "org.apache.zeppelin.jdbc.JDBCInterpreter,"
+ "org.apache.zeppelin.hbase.HbaseInterpreter,"
+ "org.apache.zeppelin.bigquery.BigQueryInterpreter"),
+ "org.apache.zeppelin.bigquery.BigQueryInterpreter",
+ "org.apache.zeppelin.beam.BeamInterpreter"),
ZEPPELIN_INTERPRETER_JSON("zeppelin.interpreter.setting", "interpreter-setting.json"),
ZEPPELIN_INTERPRETER_DIR("zeppelin.interpreter.dir", "interpreter"),
ZEPPELIN_INTERPRETER_LOCALREPO("zeppelin.interpreter.localRepo", "local-repo"),
@ -537,7 +538,7 @@ public class ZeppelinConfiguration extends XMLConfiguration {
ZEPPELIN_INTERPRETER_MAX_POOL_SIZE("zeppelin.interpreter.max.poolsize", 10),
ZEPPELIN_INTERPRETER_GROUP_ORDER("zeppelin.interpreter.group.order", "spark,md,angular,sh,"
+ "livy,alluxio,file,psql,flink,python,ignite,lens,cassandra,geode,kylin,elasticsearch,"
+ "scalding,jdbc,hbase,bigquery"),
+ "scalding,jdbc,hbase,bigquery,beam"),
ZEPPELIN_ENCODING("zeppelin.encoding", "UTF-8"),
ZEPPELIN_NOTEBOOK_DIR("zeppelin.notebook.dir", "notebook"),
// use specified notebook (id) as homescreen