7

当您在 Hive(在 Hadoop 上)中使用 Amazon S3 源位置创建外部表时,数据何时传输到本地 Hadoop HDFS?是否开启:

  • 外部表创建
  • 在外部表上运行查询(MR 作业)时
  • 从不(从未传输过任何数据)并且 MR 作业读取 S3 数据。

S3 读取的成本是多少?将数据传输到 HDFS 是否有单一成本,或者是否没有数据传输成本,但是当 Hive 创建的 MapReduce 作业在此外部表上运行时,会产生读取成本。

一个示例外部表定义是:

CREATE EXTERNAL TABLE mydata (key STRING, value INT)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '='
LOCATION 's3n://mys3bucket/';
4

2 回答 2

8

Map 任务将直接从 S3 读取数据。在 Map 和 Reduce 步骤之间,数据将被写入本地文件系统,而在 mapreduce 作业之间(在需要多个作业的查询中),临时数据将被写入 HDFS。

如果您担心 S3 读取成本,创建另一个存储在 HDFS 上的表并从 S3 表一次性复制到 HDFS 表可能是有意义的。

于 2012-11-29T22:46:28.903 回答
3

当查询(MR 作业)访问数据时,数据会传输到您的 hadoop 节点。
创建外部表仅更改 Hive 元数据,从不移动实际数据。

于 2012-11-29T12:06:30.007 回答