[ 
https://issues.apache.org/jira/browse/ZEPPELIN-11?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14388032#comment-14388032
 ] 

ASF GitHub Bot commented on ZEPPELIN-11:
----------------------------------------

Github user felixcheung commented on a diff in the pull request:

    https://github.com/apache/incubator-zeppelin/pull/12#discussion_r27453966
  
    --- Diff: hive/src/main/java/org/apache/zeppelin/hive/HiveInterpreter.java 
---
    @@ -0,0 +1,203 @@
    +/**
    + * Licensed to the Apache Software Foundation (ASF) under one
    + * or more contributor license agreements.  See the NOTICE file
    + * distributed with this work for additional information
    + * regarding copyright ownership.  The ASF licenses this file
    + * to you under the Apache License, Version 2.0 (the
    + * "License"); you may not use this file except in compliance
    + * with the License.  You may obtain a copy of the License at
    + *
    + *     http://www.apache.org/licenses/LICENSE-2.0
    + *
    + * Unless required by applicable law or agreed to in writing, software
    + * distributed under the License is distributed on an "AS IS" BASIS,
    + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    + * See the License for the specific language governing permissions and
    + * limitations under the License.
    + */
    +package org.apache.zeppelin.hive;
    +
    +import java.sql.*;
    +import java.util.List;
    +import java.util.Properties;
    +
    +import com.nflabs.zeppelin.interpreter.*;
    +import org.apache.commons.lang.StringUtils;
    +import org.slf4j.Logger;
    +import org.slf4j.LoggerFactory;
    +
    +import com.nflabs.zeppelin.interpreter.InterpreterResult.Code;
    +import com.nflabs.zeppelin.scheduler.Scheduler;
    +import com.nflabs.zeppelin.scheduler.SchedulerFactory;
    +
    +/**
    + * Hive interpreter for Zeppelin.
    + */
    +public class HiveInterpreter extends Interpreter {
    +  Logger logger = LoggerFactory.getLogger(HiveInterpreter.class);
    +  int commandTimeOut = 600000;
    +
    +  static final String HIVESERVER_URL = "hive.hiveserver2.url";
    +  static final String HIVESERVER_USER = "hive.hiveserver2.user";
    +  static final String HIVESERVER_PASSWORD = "hive.hiveserver2.password";
    +
    +  static {
    +    Interpreter.register(
    +      "hive",
    +      "hive",
    +      HiveInterpreter.class.getName(),
    +      new InterpreterPropertyBuilder()
    +        .add(HIVESERVER_URL, "jdbc:hive2://localhost:10000", "The URL for 
HiveServer2.")
    +        .add(HIVESERVER_USER, "hive", "The hive user")
    +        .add(HIVESERVER_PASSWORD, "", "The password for the hive 
user").build());
    +  }
    +
    +  public HiveInterpreter(Properties property) {
    +    super(property);
    +  }
    +
    +  Connection jdbcConnection;
    +  Exception exceptionOnConnect;
    +
    +  //Test only method
    +  public Connection getJdbcConnection()
    +      throws SQLException {
    +    String url = getProperty(HIVESERVER_URL);
    +    String user = getProperty(HIVESERVER_USER);
    +    String password = getProperty(HIVESERVER_PASSWORD);
    +
    +    return DriverManager.getConnection(url, user, password);
    +  }
    +
    +  @Override
    +  public void open() {
    +    logger.info("Jdbc open connection called!");
    +    try {
    +      String driverName = "org.apache.hive.jdbc.HiveDriver";
    +      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 ")) {
    --- End diff --
    
    should this consider the case where EXPLAIN is in a comment or as a name of 
a column?


> Add a HiveQL interpreter to zeppelin
> ------------------------------------
>
>                 Key: ZEPPELIN-11
>                 URL: https://issues.apache.org/jira/browse/ZEPPELIN-11
>             Project: Zeppelin
>          Issue Type: New Feature
>            Reporter: Ram Venkatesh
>
> Add support for Hive and HiveQL to the zeppelin framework.
> Users can use the %hive directive to submit HiveQL statements.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to