无法找到创建的 Hive 表,也无法从表中检索数据

Posted

技术标签:

【中文标题】无法找到创建的 Hive 表,也无法从表中检索数据【英文标题】:Unable to locate the Hive table created and unable to retrieve data from the table 【发布时间】:2018-12-05 02:43:58 【问题描述】:

我正在使用 Hive shell 创建一个外部表并在其中加载一些数据。当我运行 show table 命令时,它会显示表名。但是当我运行一个选择查询来显示该表中的数据时,它没有给出任何输出。

我也尝试在 HDFS 的 /user/Hive/Warehouse 位置找到该表,但没有显示。

我正在使用默认的 Derby 数据库,并且没有对 hive-site.xml 文件进行任何更改。

更新

我使用了不正确的文件来输入数据。该文件是一个 .JSON 文件。 现在我正在尝试使用 Hive shell 创建一个外部表并在其中加载一些数据。它给出了一个错误,提示“rg.apache.hadoop.hiveql.exec.DDLTask 的执行错误返回代码 1。 MetaException(message:hdfs:/localhost:9000out_sa/part-r-00000s 不是目录或无法创建目录)

下面是我尝试在字符串列中加载的查询和数据。

查询

创建外部表 twitter_Data(评论字符串)位置“out_sa/part-r-00000”;

样本数据

RT @arjenvanberkum: The impacts of #BigData that you may not have heard of |
Descarga los PDFs de los Cursos de Google AdWords, Analytics, Community y SEO. Infórmate! 
RT @cookovernewz: The Secret Ingredient In The Text Analytics ROI Recipe - Forbes 
RT @cookovernewz: The Secret Ingredient In The Text Analytics ROI Recipe - Forbes 
The Secret Ingredient In The Text Analytics ROI Recipe - Forbes 

【问题讨论】:

请显示您的示例数据集和您运行的查询。此外,如果您使用默认的 derby 数据库,则不清楚您要在哪个文件系统上查找数据(Hive 如何在不更改配置的情况下链接到 HDFS) 我已经添加了查询和错误,并用我现在遇到的错误更新了我的帖子。 【参考方案1】:

首先,这个错误对我来说似乎很简单。 LOCATION 必须是符合所提供架构的所有文件的目录。它不能是单个文件。

其次,该文件似乎不是 JSON。它是纯文本行。

那么,不清楚你是如何将它链接到 HDFS 的,所以我建议给出 namenode 的完整路径

试试这个

CREATE EXTERNAL TABLE IF NOT EXISTS twitter_Data(
    Comments STRING
) 
ROW FORMAT DELIMITED 
LINES TERMINATED BY '\n';
STORED AS TEXT
LOCATION 'hdfs://namenode.example.com:9000:/out_sa/';

如果你想做推文/文本分析,我可能会建议使用 Spark 而不仅仅是 Hive。

【讨论】:

以上是关于无法找到创建的 Hive 表,也无法从表中检索数据的主要内容,如果未能解决你的问题,请参考以下文章

无法从临时表中删除?

从多对多连接表中检索行的 HQL 查询

由于外键为空值,无法从表中获取数据

Hive 错误 - 从表中选择 *;

Cassandra 无法从表中查询行总和

hive 创建数据表失败