将Hive的默认数据库Derby改为Postgresql

Hive的默认数据库为Derby,这个数据库用于自己调试是可以的,但是要面对大量数据就有些力不从心了,所以接下来我要将Derby换为Postgresql,我会具体说一下在更换过程中需要注意的地方。

首先,下载Hive,我们直接下载稳定的apache-hive-0.14.0-bin.tar.gz,下载地址,

http://apache.fayea.com/hive/stable/

下载完成后,安装,将Hive添加到环境变量中,编辑bashrc文件

vim ~/.bashrc

将下行添加进去

export PG_HOME=/opt/pgsql/postgresql

同时将bin目录添加到PATH中

export PATH=$PG_HOME/bin:$PATH

配置完成后,执行下面的命令,让修改的环境变量马上生效

source ~/.bashrc

好了,到这里Hive就安装完了,切换到系统管理员的身份,执行hive,看看效果

如果执行完成后没有报错,应该来到这个界面

执行

show tables;

如果返回OK,就说明你的Hive安装成功了。

接下来修改默认数据库:

首先,下载postgresql的jdbc驱动包,下载地址

http://jdbc.postgresql.org/download.html

仔细查看页面说明,选择符合自己系统环境的驱动包,我这里下载的是

postgresql-9.3-1102.jdbc41.jar

好了,将这个驱动包上传到Hive的lib目录下面,在Hive的conf目录下面添加

hive-site.xml

文件,对于0.14版本而言这个文件默认是没有的,在文件中添加以下内容

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<!--
   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.
-->
<configuration>
  <!-- WARNING!!! This file is auto generated for documentation purposes ONLY! -->
  <!-- WARNING!!! Any changes you make to this file will be ignored by Hive.   -->
  <!-- WARNING!!! You must make your changes in hive-site.xml instead.         -->
  <!-- Hive Execution Parameters -->
  
<property>

<name>javax.jdo.option.ConnectionURL</name>

<value>jdbc:postgresql://db_ip:db_port/db_name</value>

<description>JDBC connect string for a JDBC metastore</description>

</property>

<property>

<name>javax.jdo.option.ConnectionDriverName</name>

<value>org.postgresql.Driver</value>

<description>Driver class name for a JDBC metastore</description>

</property>

<property>

<name>javax.jdo.option.ConnectionUserName</name>

<value>db_user</value>

<description>username to use against metastore database</description>

</property>

<property>

<name>javax.jdo.option.ConnectionPassword</name>

<value>db_pwd</value>

<description>password to use against metastore database</description>

</property>
</configuration>

这个文件中说明了,具体的数据库连接的相关信息,到这里应该就部署完成了,但是还有一些细节需要操作,

$JAVA_HOME/lib/tools.jar

这个jar包拷贝到Hive的lib目录下。

为了防止Postgresql发生死锁需要导入一个sql,在上面的下载的Hive的包中进入到以下目录

apache-hive-0.14.0-bin.tar.gz\apache-hive-0.14.0-bin\scripts\metastore\upgrade\postgres

找到文件

hive-schema-0.14.0.postgres.sql

在linux中执行以下命令进行导入

psql -U db_user -d db_name -f hive-schema-0.14.0.postgres.sql

导入完成后,所以的修改就完成了,赶快去验证一下

create table text_test(str string);
show tables;

如果一切显示正常,那么恭喜你,修改成功!

时间: 2024-10-26 18:45:40

将Hive的默认数据库Derby改为Postgresql的相关文章

一、hive安装(内置数据库derby)

hive是一个数据仓库工具,建立在hadoop之上,它的存在是为了让大数据的查询和分析更加的方便.hive提供简单的sql查询功能,并最终转换为mapreduce任务执行. 一.环境 JDK1.8+官方推荐新版JDK,否则可能存在不同版本不兼容问题 hadoop采用2.0+版本,否则hive2.0+将不支持hadoop1.0+ Linux环境和window皆可作为生产环境,但是macos的话一般作为开发环境 本文采用centos7系统,JDk1.8,和hadoop2.9 JDK安装参考:http

SQL Server 2014 无法打开用户默认数据库 登录失败错误4064的解决方法

SQL Server 2014 无法打开用户默认数据库 登录失败错误4064的解决方法 晚上干了件蠢事,删除了管理员账户的默认数据库,紧接着就出现了标题里面的报错. 解决办法如下: 第一步:打开命令控制台 Win+R打开运行,输入CMD 第二步:复制粘贴如下命令 sqlcmd -E -d"master" -Q"exec sp_defaultdb N'PC\Admin', N'master'" 注意:把上条命令PC\Admin改成自己实际的账户,使用BackSlash

Linux下安装Python3的django并配置mysql作为django默认数据库(转载)

我的操作系统为centos6.5 1  首先选择django要使用什么数据库.django1.10默认数据库为sqlite3,本人想使用mysql数据库,但为了测试方便顺便要安装一下sqlite开发包. yum install mysql mysql-devel #为了测试方便,我们需要安装sqlite-devel包 yum install sqlite-devel 2  接下来需要安装Python了,因为Python3已经成为主流,所以接下来我们要安装Python3,到官网去下载Python3

hive和关系型数据库RDBMS的异同

摘要:由于 Hive 采用了 SQL 的查询语言 HQL,因此很容易将 Hive 理解为数据库.其实 从结构上来看,Hive 和数据库除了拥有类似的查询语言,再无类似之处.本文将 从多个方面来阐述 Hive 和数据库的差异.数据库可以用在 Online 的应用中,但是 Hive 是为数据仓库而设计的,清楚这一点,有助于从应用角度理解 Hive 的特性. Hive 和数据库的比较 查询语言 HQL SQL 数据存储位置 HDFS Raw Device 或者 Local FS 数据格式 用户定义 系

Hive中的数据库、表、数据与HDFS的对应关系

1.hive数据库 我们在hive终端,查看数据库信息,可以看出hive有一个默认的数据库default,而且我们还知道hive数据库对应的是hdfs上面的一个目录,那么默认的数据库default到底对应哪一个目录呢?我们可以通过hive配置文件hive-site.xml中的一个hive.metastore.warehouse.dir配置项看到信息. 如上图,它告诉了我们默认数据库default在hdfs的目录. 在我们的metastore中,我们可以查阅表DBS来获知对应关系. 2.hive表

默认数据库无法打开

经过在网上寻找解决方案,我发现,如下方法可以解决类似的问题.1)对于SQL Server 2000数据库使用isql命令行工具(这个工具在“C:\Program Files\Microsoft SQL Server\80\Tools\Binn”目录下) isql /U"sa" /P"sa的密码" /d"master" /Q"exec sp_defaultdb N'sa', N'master'" 如果使用Windows验证方式,

play2使用非默认数据库

1.application.conf中配置数据库: db.default.driver=com.mysql.jdbc.Driver db.default.url="mysql://root:[email protected]/myDatabase" 2.添加依赖 val appDependencies = Seq( // Add your project dependencies here, ... "mysql" % "mysql-connector-j

如何正确删除Exchange默认数据库

安装Exchange Server的时候,系统会自动生成一个默认数据库,例如 Mailbox Database 0528756723 这样一个带有十位数编码的邮箱,看起来相当不友善,而且不好记忆,且对后期我们Exchange管理员的一些界面操作或者命令行操作都有很大的影响.为了便于今后的管理和维护,也便于我们能够很好全面的对数据库进行分类区分,我们通常会删除这个默认数据库,重新创建一个友好.简洁.易区分的新邮箱数据库,当然,可以是一个,也可以是多个,这个根据自己的规划而定.那我们能够简单直接的删

SQL 默认数据库被误删

我今天也遇到了,自己解决了.这是我总结的:(不管这帖子沉到哪里了) 删除了SQL服务器默认数据库,无法连接服务器,用户[]登录失败. 1,使用管理员账户修改此用户的默认数据库.    企业管理器,展开服务器组,展开服务器,展开“安全性”,“登录名”,右击相应的登录账户,属性中重新   设置默认的数据库.  在此账户是最高账户时,登录都没法,安全节点更无法看到.   ↓↓↓↓↓↓↓↓↓↓↓↓ 2.若没有其他管理员登录账户,无法在企业管理器中修改,使用osql命令行工具:   osql 工具是一个