AWS Crawlers自定义Athena表名

使用AWS Crawlers建表时,只有一个table_prefix选项可以选择所建表的表名,无法自定义表名。因此通过ETL-workflow和ETL-Python-Shell来完成自定义表名的工作。

1.创建一个temp_db用来临时存储所创建的表

2 创建一个Crawler,将表生成在1的database中

3.创建一个Python-Shell Job,用来复制表到目标数据库中,并改成自己想要的名字

import boto3

source_db='temp_db'#创建的temp_db
target_db = "target_db"#目标数据库
table_name="初始表名" 
new_table_name = "table_name"#想命名的表名

client = boto3.client("glue")

response = client.get_table(DatabaseName=source_db, Name=table_name)
table_input = response["Table"]

table_input["Name"] = new_table_name
# Delete keys that cause create_table to fail
table_input.pop("CreatedBy")
table_input.pop("CreateTime")
table_input.pop("UpdateTime")
table_input.pop("DatabaseName")

client.create_table(DatabaseName=target_db, TableInput=table_input)
partition_input = client.get_partitions(DatabaseName=source_db, TableName=table_name)["Partitions"]
for p in partition_input:
# Delete keys that cause create_partition to fail
    p.pop("TableName")
    p.pop("CreationTime")
    p.pop("DatabaseName")
client.batch_create_partition(DatabaseName=target_db, TableName=new_table_name, PartitionInputList=partition_input)

4.在aws ETL中创建一个workflow,包括on-demond-trigger(用来trigger crawler),crawler,trigger(在爬虫successed之后trigger python job),python-job

通过以上四个步骤建成自己想要的表名的表。AWS的Crawler不支持自定义表名太low了,当公司有命名规范的时候就只能通过这种方式曲线救国。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值