File conversion 消防软管记录格式转换分区
我尝试使用firehose的新功能“记录格式转换”将我的事件保存为雅典娜或蜂巢聚合的拼花文件。您必须从glue目录中选择表,但firehose会忽略已定义的分区,而是将文件保存在YYYY/MM/DD/HH/结构中。数据还缺少定义的分区列。如果它已经将其用于分区,那么这就可以了File conversion 消防软管记录格式转换分区,file-conversion,amazon-kinesis-firehose,File Conversion,Amazon Kinesis Firehose,我尝试使用firehose的新功能“记录格式转换”将我的事件保存为雅典娜或蜂巢聚合的拼花文件。您必须从glue目录中选择表,但firehose会忽略已定义的分区,而是将文件保存在YYYY/MM/DD/HH/结构中。数据还缺少定义的分区列。如果它已经将其用于分区,那么这就可以了 是否有API配置或其他东西来强制使用表分区?即使使用相同的分区,我也有完全相同的问题 所以你必须使用AWS lambda来实现你想要的 将消防软管生成的文件移动到雅典娜使用的水桶中 另一个触发刷新雅典娜表,因为它不会看到新
是否有API配置或其他东西来强制使用表分区?即使使用相同的分区,我也有完全相同的问题 所以你必须使用AWS lambda来实现你想要的
{
"name": "your.project",
"version": "1.0.0",
"description": "Copy generated partitioned files by Firehose to valid partitioned files for Athena",
"main": "index.js",
"dependencies": {
"async": "^2.6.1"
}
}
和index.js
const aws=require('aws-sdk');
const async=require('async');
const s3=新的aws.s3();
const dstBucket='把你的桶放在这里';
var util=require('util');
exports.handler=(事件、上下文、回调)=>{
const srcBucket=event.Records[0].s3.bucket.name;
const srcKey=event.Records[0].s3.object.key;
const split=srcKey.split('/');
const dstKey=`event_year=${split[0]}/event_month=${split[1]}/event_day=${split[2]}/event_hour=${split[3]}/${split[4]};
log(“从事件中读取选项:\n”,util.inspect(事件,{depth:10}));
异步瀑布([
功能副本(下一个){
s3.copyObject({
桶:桶,
CopySource:`${srcBucket}/${srcKey}`,
密钥:dstKey
},下一页);
},
函数deleteOriginal(复制结果,下一个){
s3.deleteObject({
Bucket:srcbage,
密钥:srcKey
},下一页);
}
],函数(err){
如果(错误){
console.error(`Failed:${srcBucket}/${srcKey}=>${dstBucket}/${dstKey}将FireHose分区对象移动到Athena分区对象。error:${err}`);
}否则{
log(`Success:${srcBucket}/${srcKey}=>${dstBucket}/${dstKey}将FireHose分区对象移动到Athena分区对象`);
}
回调(null,“移动成功”);
}
);
};代码>