Hadoop 配置单元-外部表创建

Hadoop 配置单元-外部表创建,hadoop,hive,Hadoop,Hive,我正在学习hive,读了一篇关于何时使用hive外部表的文章,并提到了下面的声明 查询存储在外部系统(如AmazonS3)中的数据 -避免将该数据引入HDFS 有人能详细说明一下上述说法吗。“避免将该数据引入HDFS”?Load data local命令将有助于将本地文件加载到HDFS中,并且配置单元正在应用顶部的格式。 可以访问HDFS之外的数据吗?可以。你可以自己试试。在CDH上,我有一个文件extn\t.txt [cloudera@quickstart ~]$ pwd /home/clou

我正在学习hive,读了一篇关于何时使用hive外部表的文章,并提到了下面的声明

查询存储在外部系统(如AmazonS3)中的数据 -避免将该数据引入HDFS

有人能详细说明一下上述说法吗。“避免将该数据引入HDFS”?Load data local命令将有助于将本地文件加载到HDFS中,并且配置单元正在应用顶部的格式。

可以访问HDFS之外的数据吗?

可以。你可以自己试试。在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                     |
+-------------------------------+----------------------------------------------------+-----------------------+
加载数据不同。请检查这个

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

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

有人能详细解释一下上述说法吗。“避免将该数据引入HDFS”


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

谢谢@cricket_007。提供了更多信息。再次感谢我在执行以下命令时遇到以下错误。配置单元(hivedb)>创建外部表exemp(id int,name string,age int)>行格式分隔>以“,”结尾的字段>以“\n'>结尾的行存储为textfile>location”file:///home/user/data'; 失败:执行错误,从org.apache.hadoop.hive.ql.exec.ddlstask返回代码1。MetaException(message:file:/home/user/data不是目录或无法创建目录)配置单元(hivedb)>能否按原样尝试我的示例,并让我们知道它是否工作
user@gateway1:~/extn$cat t.txt什么的user@gateway1:~/extn$pwd/home/user/extnuser@gateway1:~/extn$hive>创建外部表tbl(行字符串)>位置'file:///home/user/extn'; 失败:执行错误,从org.apache.hadoop.hive.ql.exec.ddlstask返回代码1。MetaException(消息:file:/home/user/extn不是目录或无法创建目录)配置单元>
@Bala