我创建了一个工作配置单元脚本,用于将数据从 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'
LOCATION '${hiveconf:S3Location}', TBLPROPERTIES ("dynamodb.table.name" = ${hiveconf:DynamoDBTableName}, "dynamodb.column.mapping" = "UserGuid:UserGuid,PreferenceKey:PreferenceKey,DateCreated:DateCreated,DateEmailGenerated: DateEmailGenerated,DateLastUpdated:DateLastUpdated,ReceiveEmail:ReceiveEmail,HomePage:HomePage,EmailFormat:EmailFormat,SavedSearchCriteria:SavedSearchCriteria,SavedSearchLabel:SavedSearchLabel");