Hive自定义设置连接用户名和密码

简介

  • 当hive客户端搭建起来之后,应用项目远程连接hive需要设置用户名和密码;
  • 由于hive默认的用户名和密码都是空的,所以需要我们自定义用户名和密码;

实践

  • 首先,需要先用java开发工具打包一个jar工具类,用于解析用户名和密码,可直接下载这个jar工具包:hiveAuth.jar
  • 也可以自行通过编写代码进行打jar包,代码如下:
package org.apache.hadoop.hive.contrib.auth;
 
 
import javax.security.sasl.AuthenticationException;
 
 
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hive.conf.HiveConf;
import org.slf4j.Logger;
 
 
public class CustomPasswdAuthenticator implements org.apache.hive.service.auth.PasswdAuthenticationProvider{
	
	private Logger LOG = org.slf4j.LoggerFactory.getLogger(CustomPasswdAuthenticator.class);
	
	private static final String HIVE_JDBC_PASSWD_AUTH_PREFIX="hive.jdbc_passwd.auth.%s";
	
	private Configuration conf=null;
	
	@Override
	public void Authenticate(String userName, String passwd)  
		      throws AuthenticationException {  
		    LOG.info("user: "+userName+" try login.");  
		    String passwdConf = getConf().get(String.format(HIVE_JDBC_PASSWD_AUTH_PREFIX, userName));  
		    if(passwdConf==null){  
		      String message = "user's ACL configration is not found. user:"+userName;  
		      LOG.info(message);  
		      throw new AuthenticationException(message);  
		    }   
		    if(!passwd.equals(passwdConf)){  
		      String message = "user name and password is mismatch. user:"+userName;  
		      throw new AuthenticationException(message);  
		    }  
		  }  
	
		  public Configuration getConf() {  
		    if(conf==null){  
		      this.conf=new Configuration(new HiveConf());  
		    }  
		    return conf;  
		  }  
		  
		  public void setConf(Configuration conf) {  
		    this.conf=conf;  
		  }
	
	
}
  •  之后,将jar包放在hive根目录的lib目录下,同时,需要修改conf下的hive-site.xml配置文件;
<!--自定义远程连接用户名和密码-->
<property>
<name>hive.server2.authentication</name>
<value>CUSTOM</value><!--默认为none,修改成CUSTOM-->
</property>
 
<!--指定解析jar包-->
<property>
<name>hive.server2.custom.authentication.class</name>
<value>org.apache.hadoop.hive.contrib.auth.CustomPasswdAuthenticator</value>
</property>  
 
<!--设置用户名和密码-->
<property>
 <name>hive.jdbc_passwd.auth.muzili</name><!--用户名为最后一个:muzili-->
 <value>muzili</value><!--密码-->
</property>  
  • 最后还需要修改hadoop的相关文件,切换到hadoop配置文件目录:hadoop/etc/hadoop,修改hadoop:core-site.xml,否则java连接hive没权限
<property>
  <name>hadoop.proxyuser.hadoop.hosts</name>
  <value>*</value>
</property>
<property>
  <name>hadoop.proxyuser.hadoop.groups</name>
  <value>*</value>
</property>
  •  重启hadoop和hive,可以利用beeline命令去测试,这里用java的客户端去连接测试;

1. pom添加hive依赖

<dependency>
	<groupId>org.apache.hive</groupId>
	<artifactId>hive-jdbc</artifactId>
	<version>2.1.1</version>
	<exclusions>
		<exclusion>
			<groupId>org.eclipse.jetty.aggregate</groupId>
			<artifactId>*</artifactId>
		</exclusion>
	</exclusions>
</dependency>

2. 创建main方法连接测试

package com.springboot.sixmonth.common.util;
 
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
 
/**
 * hive连接测试类
 * @author muzili
 * @Date 2021年9月3日
 *
 */
public class HiveTest {
	
	//9019是自定义远程连接的端口,默认是10000
	private static final String URLHIVE = "jdbc:hive2://47.100.200.200:9019/default";
    private static Connection connection = null;
 
    public static Connection getHiveConnection() {
        if (null == connection) {
            synchronized (HiveTest.class) {
                if (null == connection) {
                    try {
                        Class.forName("org.apache.hive.jdbc.HiveDriver");
                        connection = DriverManager.getConnection(URLHIVE, "muzili", "muzili");
                        System.out.println("hive启动连接成功!");
                    } catch (SQLException e) {
                        e.printStackTrace();
                    } catch (ClassNotFoundException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
        return connection;
    }
 
 
    public static void main(String args[]) throws SQLException{
    	
    	String sql1="select * from sixmonth limit 1";
    	PreparedStatement pstm = getHiveConnection().prepareStatement(sql1);
    	ResultSet rs= pstm.executeQuery(sql1);
    	
    	while (rs.next()) {
			System.out.println(rs.getString(2));
		}
    	pstm.close();
    	rs.close();
    	
    }
 
}

3. 运行成功之后,即可读取hive里面的数据

总结

  1. 开发工具远程连接hive可自定义端口,缺省10000,阿里云服务器的话需要添加端口的安全组;
  2. 实践是检验认识真理性的唯一标准,自己动手,丰衣足食,加油呀!!!

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
### 回答1: 要在 PyCharm 中连接Hive,你需要执行以下步骤: 1. 安装 PyHive 包 在 PyCharm 中打开终端并运行以下命令: ``` pip install pyhive ``` 2. 安装 thrift-sasl 和 thrift 包 在 PyCharm 中打开终端并运行以下命令: ``` pip install thrift-sasl pip install thrift ``` 3. 配置 Hive 连接参数 在 PyCharm 中打开新的 Python 文件并添加以下代码: ```python from pyhive import hive conn = hive.Connection( host='localhost', port=10000, username='your-username', password='your-password', database='your-database' ) cursor = conn.cursor() cursor.execute('SELECT * FROM your-table LIMIT 10') for result in cursor.fetchall(): print(result) ``` 请替换上述代码中的连接参数为你自己的 Hive 连接参数。 4. 运行代码 在 PyCharm 中运行代码。如果一切正常,你应该可以看到从 Hive 表中检索到的前 10 行数据。 希望这可以帮助你连接 PyCharm 到 Hive 虚拟机。 ### 回答2: 要将虚拟机中的Hive连接到电脑上的PyCharm,需要遵循以下步骤: 1. 确保已经在虚拟机中安装和配置了Hive。确保Hive服务正在运行。 2. 在PyCharm中,点击“File”(文件)选项卡,然后选择“Settings”(设置)。 3. 在设置窗口的左侧栏中,展开“Project”(项目)选项卡,然后选择“Project Interpreter”(项目解释器)。 4. 在项目解释器区域,点击右上角的齿轮图标,选择“Add”(添加)。 5. 在添加解释器窗口中,选择“SSH Interpreter”(SSH解释器)。 6. 在SSH解释器设置窗口中,输入虚拟机的连接信息,如主机名、用户名密码。 7. 选择正确的Python解释器路径。这通常是在虚拟机中的/usr/bin/python。 8. 将“Python interpreter path”(Python解释器路径)设置为虚拟机中的Hive CLI路径,如/usr/local/hive/bin/hive。 9. 点击“Test Connection”(测试连接)按钮,确保连接成功。然后点击“OK”保存设置。 现在,虚拟机中的Hive已经成功连接到了PyCharm。您可以使用PyCharm开发和运行Hive查询和代码,并与虚拟机中的Hive进行交互。 ### 回答3: 首先,要连接虚拟机中的Hive到电脑上的PyCharm,我们需要确保已经正确安装了Hive,并且PyCharm上已经安装了Hive支持的相关插件。 接下来,我们需要设置Hive连接信息。在PyCharm中,找到并打开"Database"工具窗口。点击窗口右上角的"+"按钮,选择"Hive"作为新的数据源。 在弹出的对话框中,首先填写连接名称,可以自定义。接着,在"HiveServer"一栏中,填写Hive Server的地址和端口号,这通常是虚拟机中Hive的IP地址和默认端口"10000"。在"Credentials"一栏中,填写Hive Server的用户名密码,这通常是虚拟机中Hive的默认用户名密码。 点击"Test Connection"按钮测试连接是否成功,如果成功,点击"Apply"和"OK"按钮保存设置。 完成上述步骤后,我们就成功连接了虚拟机中的Hive到电脑上的PyCharm。接下来,可以在PyCharm中使用Hive的相关功能,例如执行Hive SQL语句、查询数据等操作。 需要注意的是,连接虚拟机中的Hive到电脑上的PyCharm需要保证网络连接正常,并且Hive Server已经启动和运行。另外,有可能还需要在虚拟机的防火墙设置中允许相关端口通过,以确保连接成功。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大数据翻身

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值