与ApacheHive1.1.0和.hiverc相关的问题
我已经安装了ApacheHive1.1.0。默认情况下,hdfs主//用户/单元/仓库,hdfs temp : /tmp
我在unix机器hdpadmin上有用户,现在我有了我的应用程序特定的HDFS路径。
Probelm:数据库是在默认的仓库目录中创建的,而不是应用程序特定的目录:/ app /myApp/HIVE/仓库
解决这个问题的办法是什么?
[root@cdh1 ~]# su - hiveuser
[hiveuser@cdh1 ~]$ vim .hiverc [created a hiverc file]
SET hive.metastore.warehouse.dir=/app/myApp/HIVE/WAREHOUSE;
SET hive.exec.scratchdir=/app/myApp/HIVE/TMP;
save and close
[hiveuser@cdh1 ~]$ hive
[hiveuser@cdh1 ~]$ hive
Logging initialized using configuration in jar:file:/opt/cloudera/parcels/CDH-5.4.5-1.cdh5.4.5.p0.7/jars/hive-common-1.1.0-cdh5.4.5.jar!/hive-log4j.properties
WARNING: Hive CLI is deprecated and migration to Beeline is recommended.
hive> set hive.metastore.warehouse.dir;
hive.metastore.warehouse.dir=/app/myApp/HIVE/WAREHOUSE
hive> set hive.exec.scratchdir;
hive.exec.scratchdir=/app/myApp/HIVE/TMP
hive> create database temp;
OK
Time taken: 0.561 seconds
hive> dfs -ls /app/myApp/HIVE/WAREHOUSE; ['temp' database not shown]
hive> desc database temp; [probelm: Creating in the default warehouse path rather my path : /app/myApp/HIVE/WAREHOUSE]
OK
temp hdfs://nameservice1/user/hive/warehouse/temp.db hiveuser USER
Time taken: 0.217 seconds, Fetched: 1 row(s)
hive>发布于 2015-10-10 16:20:23
正如Apache Wiki页面中所解释的那样
hive.exec.scratchdir
为蜂巢的工作划出空间。Hive使用这个目录来存储查询的不同map/还原阶段的计划,以及存储这些阶段的中间输出。
hive.metastore.warehouse.dir
仓库的默认数据库的位置。
上述解释基本上意味着更改划痕目录位置无助于数据库位置,因为这只是Hive用来存储MapReduce作业进度/计划和任何其他中间数据的临时位置。
因此,您可以使用location参数或更改单元仓库目录,而不是更改划痕目录。在您的情况下,请使用:
CREATE DATABASE temp LOCATION '/app/myApp/HIVE/WAREHOUSE';或
set hive.metastore.warehouse.dir='/app/myApp/HIVE/WAREHOUSE';
CREATE DATABASE temp;当要创建的数据库有不同的位置时,可以使用前者,而当要创建的所有数据库都指向相同的位置时,则应该使用后者。
P.S.你也可以让你的划痕目录指向与你的数据库相同的位置;但是使用相同的位置进行划痕和数据库是没有意义的,除非你有一个特殊的用例需要这样做,因为Hive会根据执行查询的用户创建很多目录。
发布于 2020-01-16 08:40:51
在hive中,创建数据库时,它的信息以及默认位置存储在Hive (tbl:DBS和field:DB_LOCATION_URI)中。因此,在单元配置中更改Hive仓库路径属性不会产生任何影响。解决这个问题的两种方法(假设您已经更新了蜂巢配置并重新启动了亚稳态)-
https://stackoverflow.com/questions/33043584
复制相似问题