Hive表在所有查询上返回空结果集

时间:2014-04-15 20:50:24

标签: mysql sql hadoop hive bigdata

我创建了一个Hive表,它从文本文件中加载数据。但它返回的空结果集在所有查询上。

我尝试了以下命令:

CREATE TABLE table2(
id1 INT,
id2 INT,
id3 INT,
id4 STRING,
id5 INT,
id6 STRING,
id7 STRING,
id8 STRING,
id9 STRING,
id10 STRING,
id11 STRING,
id12 STRING,
id13 STRING,
id14 STRING,
id15 STRING
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '|'
STORED AS TEXTFILE
LOCATION '/user/biadmin/lineitem';

执行命令,并创建表。但是,对于所有查询,始终返回0行,包括SELECT * FROM table2;

示例数据:

输入数据的单行:

1 | 155190 | 7706 | 1 | 17 | 21168.23 | 0.04 | 0.02 | N | O | 1996-03-13 | 1996-02-12 | 1996-03-22 |交付人员|卡车|以上法院的|

我附上了数据文件的屏幕截图。 命令输出:DESCRIBE FORMATTED table2;

| Wed Apr 16 20:18:58 IST 2014 : Connection obtained for host: big-instght-15.persistent.co.in, port number 1528. |
| # col_name                    data_type                   comment                                               |
|                                                                                                                 |
| id1                         int                         None                                                    |
| id2                         int                         None                                                    |
| id3                         int                         None                                                    |
| id4                         string                      None                                                    |
| id5                         int                         None                                                    |
| id6                         string                      None                                                    |
| id7                         string                      None                                                    |
| id8                         string                      None                                                    |
| id9                         string                      None                                                    |
| id10                        string                      None                                                    |
| id11                        string                      None                                                    |
| id12                        string                      None                                                    |
| id13                        string                      None                                                    |
| id14                        string                      None                                                    |
| id15                        string                      None                                                    |
|                                                                                                                 |
| # Detailed Table Information                                                                                    |
| Database:                   default                                                                             |
| Owner:                      biadmin                                                                             |
| CreateTime:                 Mon Apr 14 20:17:31 IST 2014                                                        |
| LastAccessTime:             UNKNOWN                                                                             |
| Protect Mode:               None                                                                                |
| Retention:                  0                                                                                   |
| Location:                   hdfs://big-instght-11.persistent.co.in:9000/user/biadmin/lineitem                 |
| Table Type:                 MANAGED_TABLE                                                                       |
| Table Parameters:                                                                                               |
|         serialization.null.format                                                                               |
|         transient_lastDdlTime        1397486851                                                                 |
|                                                                                                                 |
| # Storage Information                                                                                           |
| SerDe Library:              org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe                                  |
| InputFormat:                org.apache.hadoop.mapred.TextInputFormat                                            |
| OutputFormat:               org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat                          |
| Compressed:                 No                                                                                  |
| Num Buckets:                -1                                                                                  |
| Bucket Columns:             []                                                                                  |
| Sort Columns:               []                                                                                  |
| Storage Desc Params:                                                                                            |
|         field.delim                 |                                                                          |

+ ---------------------------------------------- -------------------------------------------------- ----------------- +

谢谢!

4 个答案:

答案 0 :(得分:1)

请确保 /user/biadmin/lineitem.txt 的位置确实存在并且您的数据存在。由于您使用的是 LOCATION 子句,因此您的数据必须存在,而不是默认的仓库位置 / user / hive / warehouse

快速 ls 验证:

bin/hadoop fs -ls /user/biadmin/lineitem.txt

另外,请确保使用正确的分隔符

答案 1 :(得分:0)

您是否尝试过使用LOAD DATA LOCAL INFILE

LOAD DATA LOCAL INFILE'/user/biadmin/lineitem.txt' INTO TABLE table2 
FIELDS TERMINATED BY '|'
LINES TERMINATED BY '\n'
(id1,id2,id3........);

文档:http://dev.mysql.com/doc/refman/5.1/en/load-data.html

答案 2 :(得分:0)

您使用的是托管表还是外部表?如果是外部表,则应在创建表时使用外部关键字。在使用load命令将表数据加载到表中之后。如果它是托管表,在将数据加载到表后,您可以在hadoop中看到hive仓库目录中的数据。默认路径是" / user / hive / warehouse / yourtablename"。 你应该在hive shell中运行load命令。

答案 3 :(得分:0)

我能够将数据加载到表中。问题是:

LOCATION'/ user / biadmin / lineitem';

没有加载任何数据。但是当我将包含该文件的目录作为路径时:

LOCATION'/ user / biadmin / tpc-h';

我将lineite.txt文件放在tpc-h目录中。

有效!