hive-external表创建

qyzbxkaa  于 2021-05-29  发布在  Hadoop
关注(0)|答案(2)|浏览(359)

我正在学习hive,读了一篇关于何时使用hive外部表的文章,并提到了下面的声明。
要查询存储在外部系统(如amazons3)中的数据,请避免将该数据引入hdfs
有人能详细说明一下上述说法吗?”避免将这些数据引入hdfs“?load data local命令将有助于将本地文件加载到hdfs中,而hive正在应用顶部的格式。
是否可以访问hdfs之外的数据?

yzxexxkh

yzxexxkh1#

这是可能的。你可以自己试试。关于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 |
+-------------------------------+----------------------------------------------------+-----------------------+

负载数据不同。请检查此外部表与加载数据
6qqygrtg

6qqygrtg2#

是否可以访问hdfs之外的数据?
hive可以读取任何与hadoop兼容的文件系统上的数据,而不仅仅是hdfs。
有人能详细说明一下上述说法吗?”避免将这些数据引入hdfs“?
以s3为例,可以创建一个位置为的外部表 s3a://bucket/path ,除非您真的需要与s3相比读取hdfs的速度,否则没有必要将它带到hdfs。然而,要将数据集持久化到短暂的云集群中,结果应该写回提供的任何长期存储。

相关问题