如何解决错误 "file:/user/hive/warehouse/records is not a directory or unable to create one"?

How can I solve the error "file:/user/hive/warehouse/records is not a directory or unable to create one"?

hive> CREATE TABLE records (year STRING, temperature INT, quality INT)
    > ROW FORMAT DELIMITED
    >   FIELDS TERMINATED BY '\t';
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. MetaException(message:file:/user/hive/warehouse/records is not a directory or unable to create one)

如何解决错误?

/user/hive/warehouse/ 在哪里?在我 Ubuntu 下的本地 ext4 文件系统中,没有 /user/hive/warehouse/ 这样的路径。

我怎样才能得到关于检查 /user/hive/warehouse/ 的信息?

您应该在 运行 hive 命令之前在 hdfs 文件系统中创建 /user/hive/warehouse 文件夹。

Hive内部使用hadoop hdfs文件系统来存储数据库数据。您可以在 hive-default.xml and/or hive-site.xml 配置文件或 hive 终端中检查 hdfs 目录路径,使用以下命令

hive> set hive.metastore.warehouse.dir;

如前所述,Hive 使用 Hadoop,因此

  • 必须安装 Hadoop 并且 运行 状态
  • HADOOP_HOME 必须设置环境变量

    export HADOOP_HOME=hadoop-install-dir

    export PATH=$PATH:$HADOOP_HOME/bin

  • 必须创建 hdfs 文件系统中的目录并授予对 hive 的访问权限

    hadoop fs -mkdir -p /tmp

    hadoop fs -mkdir -p /user/hive/warehouse

    hadoop fs -chmod g+w /tmp

    hadoop fs -chmod g+w /user/hive/warehouse

列出 hdfs 文件系统中的目录

hadoop fs -ls /user
hadoop fs -ls /
hadoop fs -ls /user/hive/ 

Hive Wiki page