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
>>>
>>

Reply via email to