It was indeed a typo in the configuration. Thanks you!
On Sat, Apr 25, 2015 at 2:02 AM, moon soo Lee <[email protected]> wrote: > And have you added your interpreter classname to 'zeppelin.interpreters' > property in conf/zeppelin-site.xml and/or > > 'ZEPPELIN_INTERPRETERS' conf var in > zeppelin-zengine/src/main/java/org/apache/zeppelin/conf/ZeppelinConfiguration.java > ? > > That'll make your interpreter available in 'Interpreter' menu. > > > Thanks, > > moon > > On Thu, Apr 23, 2015 at 5:47 PM Daniel Haviv < > [email protected]> wrote: > >> Hi, >> No I haven't because it doesn't appear under the interpreter drop down >> menu. >> >> Thanks, >> Daniel >> >> On Thu, Apr 23, 2015 at 8:32 AM, moon soo Lee <[email protected]> wrote: >> >>> Hi, >>> >>> You have created profile setting for your presto interpreter in >>> 'interpreter' menu and bind it in your particular notebook. right? >>> If so, could you see any message in log file >>> ZEPPELIN_HOME/logs/zeppelin-interpreter-presto-*.log >>> ? >>> >>> Thanks! >>> moon >>> >>> >>> >>> On Thu, Apr 23, 2015 at 2:12 PM IT CTO <[email protected]> wrote: >>> >>>> Nice job, happy to see you here with the presto interperter. >>>> You should try posting to dev alias and not user >>>> Eran >>>> >>>> On יום ד׳, 22 באפר 2015, 14:28 Daniel Haviv < >>>> [email protected]> wrote: >>>> >>>>> Hi, >>>>> I wrote a simple Interpreter, basically just changing Hive's to Presto >>>>> but it doesn't get loaded for some reason on startup. >>>>> I can see it's getting picked up on the log: >>>>> zeppelin-root-hdname.todacell.com.log: INFO [2015-04-22 11:16:04,272] >>>>> ({main} InterpreterFactory.java[init]:112) - Reading >>>>> /tmp/zeppelin/incubator-zeppelin-master/interpreter/presto >>>>> >>>>> so I'm guessing it's something with my code (Can be seen in a readable >>>>> version here http://pastebin.com/1VqCMEgS) : >>>>> package org.apache.zeppelin.presto; >>>>> >>>>> import java.sql.*; >>>>> import java.util.List; >>>>> import java.util.Properties; >>>>> >>>>> import org.apache.zeppelin.interpreter.*; >>>>> import org.apache.commons.lang.StringUtils; >>>>> import org.slf4j.Logger; >>>>> import org.slf4j.LoggerFactory; >>>>> >>>>> import org.apache.zeppelin.interpreter.InterpreterResult.Code; >>>>> import org.apache.zeppelin.scheduler.Scheduler; >>>>> import org.apache.zeppelin.scheduler.SchedulerFactory; >>>>> >>>>> /** >>>>> * Presto interpreter for Zeppelin. >>>>> */ >>>>> public class PrestoInterpreter extends Interpreter { >>>>> Logger logger = LoggerFactory.getLogger(PrestoInterpreter.class); >>>>> int commandTimeOut = 600000; >>>>> >>>>> static final String PRESTOSERVER_URL = "presto.url"; >>>>> static final String PRESTOSERVER_USER = "presto.user"; >>>>> static final String PRESTOSERVER_PASSWORD = "presto.password"; >>>>> >>>>> static { >>>>> Interpreter.register( >>>>> "presto", >>>>> "presto", >>>>> PrestoInterpreter.class.getName(), >>>>> new InterpreterPropertyBuilder() >>>>> .add(PRESTOSERVER_URL, "jdbc:presto://localhost:8089", "The >>>>> URL for Presto") >>>>> .add(PRESTOSERVER_USER, "Presto", "The Presto user") >>>>> .add(PRESTOSERVER_PASSWORD, "", "The password for the Presto >>>>> user").build()); >>>>> } >>>>> >>>>> public PrestoInterpreter(Properties property) { >>>>> super(property); >>>>> } >>>>> >>>>> Connection jdbcConnection; >>>>> Exception exceptionOnConnect; >>>>> >>>>> //Test only method >>>>> public Connection getJdbcConnection() >>>>> throws SQLException { >>>>> String url = getProperty(PRESTOSERVER_URL); >>>>> String user = getProperty(PRESTOSERVER_USER); >>>>> String password = getProperty(PRESTOSERVER_PASSWORD); >>>>> >>>>> return DriverManager.getConnection(url, user, password); >>>>> } >>>>> >>>>> @Override >>>>> public void open() { >>>>> logger.info("Jdbc open connection called!"); >>>>> try { >>>>> String driverName = "org.apache.Presto.jdbc.PrestoDriver"; >>>>> Class.forName(driverName); >>>>> } catch (ClassNotFoundException e) { >>>>> logger.error("Can not open connection", e); >>>>> exceptionOnConnect = e; >>>>> return; >>>>> } >>>>> try { >>>>> jdbcConnection = getJdbcConnection(); >>>>> exceptionOnConnect = null; >>>>> logger.info("Successfully created Jdbc connection"); >>>>> } >>>>> catch (SQLException e) { >>>>> logger.error("Cannot open connection", e); >>>>> exceptionOnConnect = e; >>>>> } >>>>> } >>>>> >>>>> @Override >>>>> public void close() { >>>>> try { >>>>> if (jdbcConnection != null) { >>>>> jdbcConnection.close(); >>>>> } >>>>> } >>>>> catch (SQLException e) { >>>>> logger.error("Cannot close connection", e); >>>>> } >>>>> finally { >>>>> jdbcConnection = null; >>>>> exceptionOnConnect = null; >>>>> } >>>>> } >>>>> >>>>> Statement currentStatement; >>>>> private InterpreterResult executeSql(String sql) { >>>>> try { >>>>> if (exceptionOnConnect != null) { >>>>> return new InterpreterResult(Code.ERROR, >>>>> exceptionOnConnect.getMessage()); >>>>> } >>>>> currentStatement = jdbcConnection.createStatement(); >>>>> StringBuilder msg = null; >>>>> if (StringUtils.containsIgnoreCase(sql, "EXPLAIN ")) { >>>>> //return the explain as text, make this visual explain later >>>>> msg = new StringBuilder(); >>>>> } >>>>> else { >>>>> msg = new StringBuilder("%table "); >>>>> } >>>>> ResultSet res = currentStatement.executeQuery(sql); >>>>> try { >>>>> ResultSetMetaData md = res.getMetaData(); >>>>> for (int i = 1; i < md.getColumnCount() + 1; i++) { >>>>> if (i == 1) { >>>>> msg.append(md.getColumnName(i)); >>>>> } else { >>>>> msg.append("\t" + md.getColumnName(i)); >>>>> } >>>>> } >>>>> msg.append("\n"); >>>>> while (res.next()) { >>>>> for (int i = 1; i < md.getColumnCount() + 1; i++) { >>>>> msg.append(res.getString(i) + "\t"); >>>>> } >>>>> msg.append("\n"); >>>>> } >>>>> } >>>>> finally { >>>>> try { >>>>> res.close(); >>>>> currentStatement.close(); >>>>> } >>>>> finally { >>>>> currentStatement = null; >>>>> } >>>>> } >>>>> >>>>> InterpreterResult rett = new InterpreterResult(Code.SUCCESS, >>>>> msg.toString()); >>>>> return rett; >>>>> } >>>>> catch (SQLException ex) { >>>>> logger.error("Can not run " + sql, ex); >>>>> return new InterpreterResult(Code.ERROR, ex.getMessage()); >>>>> } >>>>> } >>>>> >>>>> @Override >>>>> public InterpreterResult interpret(String cmd, InterpreterContext >>>>> contextInterpreter) { >>>>> logger.info("Run SQL command '" + cmd + "'"); >>>>> return executeSql(cmd); >>>>> } >>>>> >>>>> @Override >>>>> public void cancel(InterpreterContext context) { >>>>> if (currentStatement != null) { >>>>> try { >>>>> currentStatement.cancel(); >>>>> } >>>>> catch (SQLException ex) { >>>>> } >>>>> finally { >>>>> currentStatement = null; >>>>> } >>>>> } >>>>> } >>>>> >>>>> @Override >>>>> public FormType getFormType() { >>>>> return FormType.SIMPLE; >>>>> } >>>>> >>>>> @Override >>>>> public int getProgress(InterpreterContext context) { >>>>> return 0; >>>>> } >>>>> >>>>> @Override >>>>> public Scheduler getScheduler() { >>>>> return SchedulerFactory.singleton().createOrGetFIFOScheduler( >>>>> PrestoInterpreter.class.getName() + this.hashCode()); >>>>> } >>>>> >>>>> @Override >>>>> public List<String> completion(String buf, int cursor) { >>>>> return null; >>>>> } >>>>> >>>>> } >>>>> >>>>> Thanks, >>>>> Daniel >>>>> >>>> >>
