如何配置配置单元元存储以使用本地文件系统而不是derby?

kupeojn6  于 2021-05-29  发布在  Hadoop
关注(0)|答案(3)|浏览(478)

我正在尝试建立一个本地配置单元示例,并希望将本地文件系统用作元存储和数据仓库。不使用德比就可以实现吗?
按照如何在没有hadoop的情况下使用hive,我设置了hive-site.xml,如下所示:

<configuration>
      <property>
         <name>hive.metastore.local</name>
         <value>true</value>
      </property>   
      <property>
         <name>hive.metastore.metadb.dir</name>
         <value>file:///var/metastore/metadb/</value>
      </property>
      <property>
         <name>hive.metastore.schema.verification</name> 
         <value>false</value> 
      </property> 
     <property> 
        <name>hive.metastore.warehouse.dir</name> 
        <value>file:///var/metastore/metadb/</value>
        <description></description> 
     </property>
     <property> 
        <name>fs.default.name</name> 
        <value>file:///tmp</value> 
     </property> 
</configuration>

我希望我能跑 hive 在我的终端上没有任何问题,但是我遇到以下错误:

Exception in thread "main" java.lang.RuntimeException: org.apache.hadoop.hive.ql.metadata.HiveException: org.apache.hadoop.hive.ql.metadata.HiveException: MetaException(message:Hive metastore database is not initialized. Please use schematool (e.g. ./schematool -initSchema -dbType ...) to create the schema. If needed, don't forget to include the option to auto-create the underlying database in your JDBC connection string (e.g. ?createDatabaseIfNotExist=true for mysql))

我没有使用jdbc元存储(即derby),所以为什么我仍然需要使用jdbc连接字符串(根据错误消息?)。甚至可以在没有derby的情况下运行本地配置单元示例吗?

unguejic

unguejic1#

metastore是apache配置单元元数据的中央存储库。它将配置单元表(如其模式和位置)和分区的元数据存储在关系数据库中。
所以你需要一个rdbms。
hive支持的数据库:derby mysql ms sql server oracle postgres

2admgd59

2admgd592#

配置单元元存储进程不能仅使用文件系统。它需要一个关系数据库。“hivewarehouse”是不同的,它存储内部的、受管理的hive表,可以是任何hadoop兼容的fieleystem(比如本地磁盘)
derby要么存储在内存中,要么持久存储在磁盘上,但使用mysql或postgres可以获得更好的性能
注意:hive仍然需要hadoop库,因此“没有hadoop”是不可能的,即使您不使用yarn或hdfs
还有,财产 fs.default.name 已被弃用并替换为 fs.defaultFS 并且必须在core-site.xml中,它不是有效的配置单元站点属性
我没有使用jdbc元存储(即derby),
是的,通过配置单元默认属性 javax.jdo.option.ConnectionURL=jdbc:derby:;databaseName=metastore_db;create=true

2ic8powd

2ic8powd3#

<property>
     <name>hive.metastore.local</name>
     <value>true</value>
  </property>   
  <property>
     <name>hive.metastore.metadb.dir</name>
     <value>file:///var/metastore/metadb/</value>
  </property>
 <property> 
    <name>fs.default.name</name> 
    <value>file:///tmp</value> 
 </property>

不推荐使用设置。
您可以使用本地文件目录来存储配置单元数据,但它要经过hadoop实现,这意味着您仍然需要安装hadoop才能使用本地文件系统来存储配置单元数据。以下是macos上的示例:

<property> 
    <name>hive.metastore.warehouse.dir</name> 
    <value>file:///Users/<Your Username>/hive/data</value>
    <description></description> 
 </property>

它将使用目录'/users//hive/data'来存储您的配置单元数据。

相关问题