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