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

Reply via email to