[英]How to configure Hive metastore to use local filesytem instead of Derby?
我正在嘗試設置本地配置單元實例,並希望將本地文件系統用作我的元存儲和數據倉庫。 是否有可能在不使用 derby 的情況下實現這一目標?
遵循How to use Hive without hadoop ,我設置了我的 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 的情況下運行本地 hive 實例嗎?
Hive Metastore 進程不能僅使用文件系統。 它需要一個關系數據庫。 “Hive 倉庫”不同,內部存儲托管 Hive 表,可以是任何 Hadoop 兼容的文件系統(例如本地磁盤)
Derby 要么存儲在內存中,要么永久存儲在磁盤上,但使用 Mysql 或 Postgres 可以獲得更好的性能
注意:Hive 仍然需要 Hadoop 庫,所以“沒有 Hadoop”是不可能的,即使你沒有使用 YARN 或 HDFS
此外,屬性fs.default.name
已被棄用並由fs.defaultFS
替換,並且必須在 core-site.xml 中,它不是有效的 hive-site 屬性
我沒有使用 JDBC 元存儲(即 derby),
是的,你是,通過 Hive 默認屬性
javax.jdo.option.ConnectionURL=jdbc:derby:;databaseName=metastore_db;create=true
<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>
設置已棄用。
您可以使用本地文件目錄來存儲hive數據,但它是通過hadoop實現的,這意味着您仍然需要安裝hadoop才能使用本地文件系統來存儲hive數據。 以下是 MacOS 上的示例:
<property>
<name>hive.metastore.warehouse.dir</name>
<value>file:///Users/<Your Username>/hive/data</value>
<description></description>
</property>
它將使用目錄“/Users//hive/data”來存儲您的配置單元數據。
Metastore 是 Apache Hive 元數據的中央存儲庫。 它存儲 Hive 表的元數據(如它們的架構和位置)和關系數據庫中的分區。
所以你需要一個 RDBMS。
Hive 支持的數據庫:Derby MySQL MS SQL Server Oracle Postgres
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.