我已经通过一个弹性MapReduce交互式会话创建了一个配置单元表,并使用CSV文件填充它,如下所示:
CREATE TABLE csvimport(id BIGINT, time STRING, log STRING)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t';
LOAD DATA LOCAL INPATH '/home/hadoop/file.csv' OVERWRITE INTO TABLE csvimport;
现在,我希望将配置单元表存储在S3存储桶中,以便在终止MapReduce实例后保留该表。
有人知道怎么做吗?
发布于 2012-03-06 23:52:24
是的,您必须在配置单元会话开始和结束时导出和导入数据
为此,您需要创建一个映射到S3存储桶和目录的表
CREATE TABLE csvexport (
id BIGINT, time STRING, log STRING
)
row format delimited fields terminated by ','
lines terminated by '\n'
STORED AS TEXTFILE
LOCATION 's3n://bucket/directory/';
将数据插入到s3表中,当插入完成时,目录将有一个csv文件
INSERT OVERWRITE TABLE csvexport
select id, time, log
from csvimport;
您的表现已保留,当您创建新的配置单元实例时,可以重新导入数据
您的表可以以几种不同的格式存储,具体取决于您想要使用它的位置。
发布于 2012-03-27 13:02:04
以上查询需要使用外部关键字,即:
CREATE EXTERNAL TABLE csvexport ( id BIGINT, time STRING, log STRING )
row format delimited fields terminated by ',' lines terminated by '\n'
STORED AS TEXTFILE LOCATION 's3n://bucket/directory/';
INSERT OVERWRITE TABLE csvexport select id, time, log from csvimport;
另一种替代方法是使用查询
INSERT OVERWRITE DIRECTORY 's3n://bucket/directory/' select id, time, log from csvimport;
该表使用配置单元默认分隔符存储在S3目录中。
发布于 2015-11-06 00:20:27
如果您可以访问亚马逊网络服务控制台并拥有您的帐户的"Access Key Id
“和”Secret Access Key
你也可以试试这个..
CREATE TABLE csvexport(id BIGINT, time STRING, log STRING)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
LOCATION 's3n://"access id":"secret key"@bucket/folder/path';
现在插入如上所述的其他数据。
INSERT OVERWRITE TABLE csvexport select id, time, log from csvimport;
https://stackoverflow.com/questions/9489487
复制相似问题