首页 > 解决方案 > 无法找到创建的 Hive 表,也无法从表中检索数据

问题描述

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

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

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

更新

我使用了不正确的文件来输入数据。该文件是一个 .JSON 文件。现在我正在尝试使用 Hive shell 创建一个外部表并在其中加载一些数据。它给出了一个错误,说“rg.apache.hadoop.hiveql.exec.DDLTask 的执行错误返回代码 1。MetaException(消息: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 

标签: hadoophivehiveql

解决方案


首先,这个错误对我来说似乎很简单。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。


推荐阅读