AWSGlue爬虫在读取空文件时会创建多个表
创始人
2024-09-25 16:01:27
0

可以使用以下代码示例来解决此问题:

import json
import boto3

def lambda_handler(event, context):
    glue = boto3.client('glue')
    
    # 获取所有数据库
    databases = glue.get_databases()
    for database in databases['DatabaseList']:
        
        # 获取每个数据库中的所有表
        tables = glue.get_tables(DatabaseName=database['Name'])
        for table in tables['TableList']:
            
            # 判断表是否为空
            partition_keys = table.get('PartitionKeys')
            if partition_keys and len(partition_keys) == 1 and partition_keys[0]['Name'] == 'year':
                
                # 获取表路径并删除表
                table_uri = table['StorageDescriptor']['Location']
                glue.delete_table(DatabaseName=database['Name'], Name=table['Name'])
                
                # 重新创建空表
                empty_table = {
                    "Name": table['Name'],
                    "StorageDescriptor": {
                        "Columns": [
                            {
                                "Name": "Col1",
                                "Type": "string",
                                "Comment": ""
                            }
                        ],
                        "Location": table_uri,
                        "InputFormat": "org.apache.hadoop.mapred.TextInputFormat",
                        "OutputFormat": "org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat",
                        "Compressed": False,
                        "NumberOfBuckets": -1,
                        "SerdeInfo": {
                            "SerializationLibrary": "org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe",
                            "Parameters": {
                                "serialization.format": "1"
                            }
                        }
                    },
                    "PartitionKeys": [
                        {
                            "Name": "year",
                            "Type": "string"
                        }
                    ],
                    "TableType": "EXTERNAL_TABLE",
                    "Parameters": {
                        "classification": "parquet",
                        "transient_lastDdlTime": str(int(time.time()))
                    }
                }
                
                # 创建新的空表
                glue.create_table(
                    DatabaseName=database['Name'],
                    TableInput=empty_table
                )

这段代码使用AWS Lambda和AWS Glue API来检查所有数据库中的所有表,并删除为空的表。然后,它重新创建空表,该表只包含一个列“Col1”。这可以防止AWS Glue爬虫在读取空文件时创建多个表。

相关内容

热门资讯

一分钟揭秘!微扑克有辅助软件吗... 一分钟揭秘!微扑克有辅助软件吗,aapoker挂,我来教教你(固有有挂)1、aapoker挂ai辅助...
重大发现!wpk德州辅助,we... 重大发现!wpk德州辅助,wepoke有挂,微扑克教程(原本有挂)1.wepoke有挂 ai辅助创建...
总算明白!微扑克辅助器是真的么... 总算明白!微扑克辅助器是真的么,德州ai辅助有用,力荐教程(都是是真的有挂)1、构建自己的微扑克辅助...
玩家必备科技!gg扑克辅助,w... 玩家必备科技!gg扑克辅助,wepoke辅助有挂,AI教程(确实真的是有挂)1、在wepoke辅助有...
重大来袭!cloudpoker... 重大来袭!cloudpoker辅助器,wepoke真的有挂,力荐教程(固有真的有挂)1、wepoke...
最新技巧!wepoke透明真的... 最新技巧!wepoke透明真的吗,智星德州菠萝有挂吗,AI教程(最初有挂);人气非常高,ai更新快且...
一分钟快速了解!德州微扑克辅助... 一分钟快速了解!德州微扑克辅助,德州微扑克辅助,高科技教程(好像存在有挂)是一款可以让一直输的玩家,...
一分钟教会你!wpk有吗,德州... 一分钟教会你!wpk有吗,德州ai辅助软件,玩家教你(固有是真的有挂)德州ai辅助软件辅助器中分为三...
实操分享!微扑克辅助,德州ai... 实操分享!微扑克辅助,德州ai机器人,科技教程(真是有挂)1、超多福利:超高返利,海量正版游戏,德州...
玩家必看科普!微扑克有辅助软件... 自定义aapoker辅助系统规律,只需要输入自己想要的开挂功能,一键便可以生成出微扑克专用辅助器,不...