我正在尝试建立一个本地配置单元示例,并希望将本地文件系统用作元存储和数据仓库。不使用德比就可以实现吗?
按照如何在没有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的情况下运行本地配置单元示例吗?
3条答案
按热度按时间unguejic1#
metastore是apache配置单元元数据的中央存储库。它将配置单元表(如其模式和位置)和分区的元数据存储在关系数据库中。
所以你需要一个rdbms。
hive支持的数据库:derby mysql ms sql server oracle postgres
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
2ic8powd3#
不推荐使用设置。
您可以使用本地文件目录来存储配置单元数据,但它要经过hadoop实现,这意味着您仍然需要安装hadoop才能使用本地文件系统来存储配置单元数据。以下是macos上的示例:
它将使用目录'/users//hive/data'来存储您的配置单元数据。