我正在学习蜂巢,并阅读了一篇关于何时使用HIVE外部表的文章,并提到了下面的陈述。
查询存储在外部系统中的数据,例如amazon s3 - 避免将数据纳入HDFS
任何人都可以详细说明以上陈述。 "避免将数据纳入HDFS"?加载数据本地命令将有助于将本地文件加载到HDFS中,而HIVE正在应用顶部的格式 是否可以访问HDFS之外的数据?
答案 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