在Hive中创建具有S3位置的外部表时,数据是否已传输?

Mat*_*ock 6 amazon hadoop hive amazon-s3

当您在Hive(在Hadoop上)上创建具有Amazon S3源位置的外部表时,数据将转移到本地Hadoop HDFS:

  • 外部表创建
  • 当quires(MR作业)在外部表上运行时
  • 从不(没有数据传输)和MR作业读取S3数据.

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

外部表定义的示例如下:

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

Joe*_*e K 6

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

如果您担心S3读取成本,则可能需要创建另一个存储在HDFS上的表,并从S3表到HDFS表执行一次性复制.