hive的元数据存储在mysql后,报错的解决方法

  最近,因为工作的需要,一直在研究hadoop系统。许多分析工作都将通过hive来解决,所以特将所碰到的问题和解决方案,陆续整理出来,既做为回顾又供需要的朋友参考! 


   因为要实现多人开发Hive,所以需要将hive的元数据存储在mysql。配置完成后,配置之前hive中创建的数据表在show tables时都不会出现,但hdfs数据文件都还在。

   当在hive中drop table 时如果报以下错时

   FAILED: Error in metadata: javax.jdo.JDODataStoreException: Error(s) were found while auto-creating/validating the datastore for classes. The errors are printed in the log, and are attached to this exception.
NestedThrowables:
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Specified key was too long; max key length is 767 bytes
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask


  解决的方法是到mysql中的hive数据库里执行 alter database hive character set latin1;改变hive元数据库的字符集,问题就可以解决!

 

 

 此外,在将hive元数据存储在远程mysql后。发现Hive中的中文都变成乱码,个人认为是java输出文件流的问题。不知道大家有没有碰到这种情况,是如何解决的?

<think>嗯,用户想了解如何安装MySQL并配置Hive元数据存储MySQL。首先,我需要回忆一下整个过程的大致步骤。安装MySQL应该包括添加仓库、安装服务器、启动服务、设置开机启动和修改root密码这些步骤。然后,配置Hive元数据存储MySQL的话,需要创建专门的数据库和用户,并赋予权限。接下来是Hive的配置,修改hive-site.xml文件,添加JDBC连接信息,还有可能需要放置MySQL的JDBC驱动包。最后是初始化Hive元数据库并验证是否成功。 不过,可能有些细节需要注意。比如,安装MySQL不同Linux发行版的命令可能不同,用户可能用的是Ubuntu或者CentOS,需要分开说明。另Hive的版本不同,对应的驱动包名称可能不一样,比如mysql-connector-java-x.x.x.jar,用户需要根据实际情况调整版本号。还有,hive-site.xml中的配置项是否正确,比如连接URL、驱动类名、用户名密码等,这些需要仔细检查,避免拼写错误。 用户可能的疑问点包括:安装MySQL的安全设置,比如是否需要运行mysql_secure_installation,还有创建用户权限是否正确,是否允许远程访问。另Hive初始化使用的schematool命令是否正确,可能需要指定数据库类型,比如--dbType mysql。还有可能出现的问题比如驱动包没有正确放置导致连接失败,或者MySQL服务没有启动导致连接不上。 需要确保步骤清晰,每个步骤的命令准确,特别是涉及到权限修改和配置文件的部分。可能还需要提醒用户根据实际环境替换变量,比如数据库名、用户名、密码、安装路径等。最后,验证部分是否成功创建表或者执行Hive命令,确认元数据存储正常。</think>### 安装MySQL并配置Hive元数据存储MySQL的步骤 --- #### **一、安装MySQL** **1. 添加MySQL仓库并安装** ```bash # Ubuntu/Debian系统 sudo apt update sudo apt install mysql-server # CentOS/RHEL系统 sudo yum install mysql-server sudo systemctl start mysqld ``` **2. 启动服务并设置开机自启** ```bash sudo systemctl start mysql # Ubuntu/Debian sudo systemctl enable mysql sudo systemctl start mysqld # CentOS/RHEL sudo systemctl enable mysqld ``` **3. 配置MySQL安全设置** ```bash sudo mysql_secure_installation # 按提示操作:设置root密码、删除匿名用户、禁止远程root登录等 ``` --- #### **二、为Hive创建元数据库** **1. 登录MySQL** ```bash mysql -u root -p ``` **2. 创建Hive元数据库和用户** ```sql CREATE DATABASE metastore_db; CREATE USER 'hiveuser'@'localhost' IDENTIFIED BY 'your_password'; GRANT ALL PRIVILEGES ON metastore_db.* TO 'hiveuser'@'localhost'; FLUSH PRIVILEGES; ``` --- #### **三、配置Hive使用MySQL** **1. 修改Hive配置文件 `hive-site.xml`** ```xml <configuration> <!-- 数据库连接配置 --> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://localhost/metastore_db?createDatabaseIfNotExist=true</value> </property> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.cj.jdbc.Driver</value> </property> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>hiveuser</value> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>your_password</value> </property> </configuration> ``` **2. 下载并放置MySQL JDBC驱动** ```bash # 下载驱动包(版本需匹配) wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-8.0.x.tar.gz tar -xzvf mysql-connector-java-8.0.x.tar.gz cp mysql-connector-java-8.0.x/mysql-connector-java-8.0.x.jar $HIVE_HOME/lib/ ``` --- #### **四、初始化Hive元数据库** ```bash schematool -dbType mysql -initSchema # 输出 "schemaTool completed" 表示成功 ``` --- #### **五、验证配置** ```bash hive # 进入Hive CLI后执行命令 hive> SHOW DATABASES; # 若无报错,则元数据存储配置成功 ``` --- ### 常见问题排查 1. **JDBC驱动问题** - 确保驱动文件在 `$HIVE_HOME/lib` 目录下 - 检查驱动版本与MySQL版本兼容性 2. **权限错误** - 确认MySQL用户 `hiveuser` 对 `metastore_db` 有完全权限 - 检查防火墙是否允许本地访问MySQL(默认端口3306) 3. **初始化失败** - 删除 `metastore_db` 数据库后重新初始化 - 使用 `-verbose` 参数查看详细日志: $$ schematool -dbType mysql -initSchema -verbose $$ --- 通过以上步骤,Hive将使用MySQL作为元数据存储,替代默认的Derby数据库,支持多用户并发访问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值