gpt4 book ai didi

hadoop - 如何使用配置单元脚本删除 AWS 中 S3 存储桶中的 000000 文件

转载 作者:可可西里 更新时间:2023-11-01 15:17:30 25 4
gpt4 key购买 nike

我创建了一个有效的配置单元脚本来将数据从 dynamodb 备份到 AWS 中 S3 存储桶中的文件。代码片段如下所示

INSERT OVERWRITE DIRECTORY '${hiveconf:S3Location}' 
SELECT *
FROM DynamoDBDataBackup;

当我运行 hive 脚本时,它可能会删除旧文件并创建一个新文件,但如果备份过程中出现错误,我猜它会回滚到旧数据,因为发生错误时文件仍然存在。

每天我们都想做一个备份,但我需要知道是否发生了错误,所以我想先删除前几天的备份,然后再创建一个备份。如果失败,则文件夹中没有我们可以自动检测到的文件。

文件名自动命名为 000000

在我的配置单元脚本中,我尝试失败了:

delete FILE '${hiveconf:S3Location}/000000'

delete FILE '${hiveconf:S3Location}/000000.0'

也许文件名是错误的。我没有对该文件设置任何权限。

我刚刚试过了,但在 STORED 失败了

SET dynamodb.endpoint= ${DYNAMODBENDPOINT}; 
SET DynamoDBTableName = "${DYNAMODBTABLE}";
SET S3Location = ${LOCATION};

DROP TABLE IF EXISTS DynamoDBDataBackupPreferenceStore;

CREATE TABLE IF NOT EXISTS DynamoDBDataBackupPreferenceStore(UserGuid STRING,PreferenceKey STRING,DateCreated STRING,DateEmailGenerated STRING,DateLastUpdated STRING,ReceiveEmail STRING,HomePage STRING,EmailFormat STRING,SavedSearchCriteria STRING,SavedSearchLabel STRING),
STORED BY 'org.apache.hadoop.hive.dynamodb.DynamoDBStorageHandler'

位置 '${hiveconf:S3Loc​​ation}', TBLPROPERTIES ("dynamodb.table.name"= ${hiveconf:DynamoDBTableName}, "dynamodb.column.mapping"= "UserGuid:UserGuid,PreferenceKey:PreferenceKey,DateCreated:DateCreated,DateEmailGenerated:DateEmailGenerated,DateLastUpdated:DateLastUpdated,ReceiveEmail:ReceiveEmail,主页:主页,电子邮件格式:电子邮件格式,保存搜索条件:保存搜索条件,保存搜索标签:保存搜索标签");

最佳答案

您可以直接使用 Hive Table 命令管理文件

首先,如果您想使用 Hive 外部控制的外部数据,请在创建表时使用外部命令

set S3Path='s3://Bucket/directory/';

CREATE EXTERNAL TABLE IF NOT EXISTS S3table
( data STRING
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
LOCATION ${hiveconf:S3Path};

您现在可以向该表中插入数据

 INSERT OVERWRITE TABLE S3table
SELECT data
FROM DynamoDBtable;

这将在目录位置内的 S3 中创建文本文件请注意,根据数据大小和 reducer 的数量,可能会有多个文本文件。文件名也是随机的 GUID 元素,即 03d3842f-7290-4a75-9c22-5cdb8cdd201b_000000

DROP TABLE S3table;

删除表格只会破坏文件的链接

现在如果你想管理目录,你可以创建一个表来控制 S3 目录(注意没有 external 命令)

CREATE TABLE IF NOT EXISTS S3table
( data STRING
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
LOCATION ${hiveconf:S3Path};

如果您现在发出删除表命令,文件夹中的所有文件都会立即删除

DROP TABLE S3table;

我建议您创建一个非外部表,然后将其删除并继续执行脚本的其余部分。如果您遇到错误,您将在作业完成后拥有一个空白目录

希望这能满足你的需求

关于hadoop - 如何使用配置单元脚本删除 AWS 中 S3 存储桶中的 000000 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17362339/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com