Hive - 外部表创建

时间:2018-02-20 19:45:48

标签: hadoop hive

我正在学习蜂巢,并阅读了一篇关于何时使用HIVE外部表的文章,并提到了下面的陈述。

查询存储在外部系统中的数据,例如amazon s3   - 避免将数据纳入HDFS

任何人都可以详细说明以上陈述。 "避免将数据纳入HDFS"?加载数据本地命令将有助于将本地文件加载到HDFS中,而HIVE正在应用顶部的格式 是否可以访问HDFS之外的数据?

2 个答案:

答案 0 :(得分:1)

  

是否可以访问HDFS之外的数据?

HIve可以读取任何Hadoop兼容文件系统上的数据,而不仅仅是HDFS。

  

有人可以详细说明上述陈述。 "避免将数据纳入HDFS"?

以S3为例,您可以创建一个位置为s3a://bucket/path的外部表,除非您确实需要与S3相比读取HDFS的速度,否则无需将其带到HDFS。但是,要在短暂的云群集中保留数据集,应将结果写回到提供的任何长期存储。

答案 1 :(得分:0)

有可能。你可以自己试试。在CDH上,我有一个文件extn\t.txt

[cloudera@quickstart ~]$ pwd
/home/cloudera
[cloudera@quickstart ~]$ cat extn/t.txt 
something
[cloudera@quickstart ~]$ 

我现在可以创建一个外部表来访问该文件,如下所示

create external table tbl(line string)
location 'file:///home/cloudera/extn'

描述表

INFO  : OK
+-----------+------------+----------+--+
| col_name  | data_type  | comment  |
+-----------+------------+----------+--+
| line      | string     |          |
+-----------+------------+----------+--+
1 row selected (0.152 seconds)
0: jdbc:hive2://localhost:10000> 

选择

INFO  : OK
+------------+--+
|  tbl.line  |
+------------+--+
| something  |
+------------+--+
1 row selected (0.134 seconds)
0: jdbc:hive2://localhost:10000> 

描述格式化的

+-------------------------------+----------------------------------------------------+-----------------------+--+
|           col_name            |                     data_type                      |        comment        |
+-------------------------------+----------------------------------------------------+-----------------------+--+
| # col_name                    | data_type                                          | comment               |
|                               | NULL                                               | NULL                  |
| line                          | string                                             |                       |
|                               | NULL                                               | NULL                  |
| # Detailed Table Information  | NULL                                               | NULL                  |
| Database:                     | default                                            | NULL                  |
| Owner:                        | cloudera                                           | NULL                  |
| CreateTime:                   | Tue Feb 20 12:49:25 PST 2018                       | NULL                  |
| LastAccessTime:               | UNKNOWN                                            | NULL                  |
| Protect Mode:                 | None                                               | NULL                  |
| Retention:                    | 0                                                  | NULL                  |
| Location:                     | file:/home/cloudera/extn                           | NULL                  |
| Table Type:                   | EXTERNAL_TABLE                                     | NULL                  |
| Table Parameters:             | NULL                                               | NULL                  |
|                               | COLUMN_STATS_ACCURATE                              | false                 |
|                               | EXTERNAL                                           | TRUE                  |
|                               | numFiles                                           | 0                     |
|                               | numRows                                            | -1                    |
|                               | rawDataSize                                        | -1                    |
|                               | totalSize                                          | 0                     |
|                               | transient_lastDdlTime                              | 1519159765            |
|                               | NULL                                               | NULL                  |
| # Storage Information         | NULL                                               | NULL                  |
| SerDe Library:                | org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe | NULL                  |
| InputFormat:                  | org.apache.hadoop.mapred.TextInputFormat           | NULL                  |
| OutputFormat:                 | org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat | NULL                  |
| Compressed:                   | No                                                 | NULL                  |
| Num Buckets:                  | -1                                                 | NULL                  |
| Bucket Columns:               | []                                                 | NULL                  |
| Sort Columns:                 | []                                                 | NULL                  |
| Storage Desc Params:          | NULL                                               | NULL                  |
|                               | serialization.format                               | 1                     |
+-------------------------------+----------------------------------------------------+-----------------------+

加载数据不同。请查看此External Table vs Load Data