see*_*ead 20 hive amazon-s3 elastic-map-reduce emr
我通过Elastic MapReduce交互式会话创建了一个Hive表,并从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;
Run Code Online (Sandbox Code Playgroud)
我现在想要将Hive表存储在S3存储桶中,以便在终止MapReduce实例后保留表.
有谁知道如何做到这一点?
use*_* Me 22
是的,您必须在蜂巢会话的开始和结束时导出和导入数据
为此,您需要创建一个映射到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/';
Run Code Online (Sandbox Code Playgroud)
将数据插入到s3表中,当插入完成时,该目录将具有csv文件
INSERT OVERWRITE TABLE csvexport
select id, time, log
from csvimport;
Run Code Online (Sandbox Code Playgroud)
您的表现在已保留,当您创建新的配置单元实例时,您可以重新导入数据
您的表格可以存储在几种不同的格式中,具体取决于您要使用它的位置.
小智 18
以上Query需要使用EXTERNAL关键字,即:
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;
Run Code Online (Sandbox Code Playgroud)
另一种方法是使用查询
INSERT OVERWRITE DIRECTORY 's3n://bucket/directory/' select id, time, log from csvimport;
Run Code Online (Sandbox Code Playgroud)
该表存储在带有HIVE默认分隔符的S3目录中.
| 归档时间: |
|
| 查看次数: |
25872 次 |
| 最近记录: |