带有位置的 Hive 外部表

Posted

技术标签:

【中文标题】带有位置的 Hive 外部表【英文标题】:Hive external table with location 【发布时间】:2018-02-21 18:56:50 【问题描述】:

引用此网址:Hive - External table creation

使用位置关键字和值创建的 Hive 外部表指向我的本地磁盘。

create external table exemp(id int,name string,age int) 
row format delimited 
fields terminated by ','
lines terminated by '\n'
stored as textfile
location 'file:///home/user/data';

但是我收到了这个错误。

失败:执行错误,从 org.apache.hadoop.hive.ql.exec.DDLTask 返回代码 1。 MetaException(message:file:/home/user/data 不是目录或无法创建)

但是 /home/user/data 目录存在于我的本地并且有 emp 详细信息。 任何想法,为什么它会导致问题

【问题讨论】:

file:///home/user/data 是 HDFS 位置吗? 不。。这是我的本地目录。 位置应该是 HDFS 位置。 Vamshi 请参考这个网址:***.com/questions/48893078/…。我们从外部文件系统连接的东西 您运行 hive 的用户是否对本地目录具有写入权限? 【参考方案1】:

您在创建 hive 表时使用的位置似乎是本地文件位置。我们需要有 HDFS 路径(或其他兼容的数据源)才能创建配置单元表。如果您可以将数据文件 scp 到 HDFS,然后尝试使用 HDFS 位置,这将起作用。

【讨论】:

库马尔,。所以 Location 值总是应该指向 HDFS 目录。不是我们的本地文件系统。它是否正确?还阅读了一些文章提到我们可以提供我们的本地文件系统或amzon s3 ..有点困惑。你能提供更多关于这方面的信息吗 嘿..你可以通过这个链接。 可以发一下链接吗? 嘿,对不起...错误的链接没有早点发布。 cwiki.apache.org/confluence/display/Hive/… 另外,如果你想使用本地文件位置来创建表,你可以使用 LOAD DATA INPATH '/user/data_path' INTO TABLE -- 这个语法。有关这方面的更多详细信息,您可以参考:cwiki.apache.org/confluence/display/Hive/…

以上是关于带有位置的 Hive 外部表的主要内容,如果未能解决你的问题,请参考以下文章

Hive:修改外部表的位置需要太长时间

Hadoop Hive:创建具有动态位置的外部表

当您在 Hive 中使用 S3 位置创建外部表时,数据何时传输?

hive 内部表和外部表的区别

Hive 外部表架构重新连接

Hive内部表和外部表的区别