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爬虫在读取空文件时创建多个表。

相关内容

热门资讯

关于!微信微乐自建房辅助工具,... 关于!微信微乐自建房辅助工具,微乐家乡麻将自建房辅助app(开挂自建房)方法1)微乐家乡麻将自建房辅...
大家学习交流!微信卡五星辅助器... 大家学习交流!微信卡五星辅助器,微乐小程序免费黑科技(开挂自建房)方法1、很好的工具软件,可以解锁游...
三分钟了解!微乐微信自建房辅助... 三分钟了解!微乐微信自建房辅助工具插件,微乐家乡麻将自建房辅助app(开挂自建房)工具1、三分钟了解...
一分钟教会你!微乐家乡麻将自建... 一分钟教会你!微乐家乡麻将自建房辅助app,微乐自建房脚本免费入口(开挂自建房)方法1、用户打开应用...
分享实测!微信微乐自建房辅助工... 分享实测!微信微乐自建房辅助工具,微乐自建房脚本免费入口(开挂自建房)器1、起透看视 微信微乐自建房...
重大通报!微乐自建房辅助工具脚... 重大通报!微乐自建房辅助工具脚本,微乐小程序免费黑科技(开挂自建房)app微乐自建房辅助工具脚本破解...
如何分辨真伪!微乐微信自建房辅... 如何分辨真伪!微乐微信自建房辅助工具插件,微乐小程序免费黑科技(开挂自建房)技巧1、微乐微信自建房辅...
我来教教你!微乐自建房辅助工具... 我来教教你!微乐自建房辅助工具挂,微乐家乡麻将自建房辅助app(开挂自建房)工具1、玩家可以在微乐家...
重大来袭!微乐自建房辅助工具神... 重大来袭!微乐自建房辅助工具神器,微乐小程序免费黑科技(开挂自建房)器1、游戏颠覆性的策略玩法,独创...
带你了解!微信卡五星辅助器,微... 带你了解!微信卡五星辅助器,微乐自建房脚本免费入口(开挂自建房)方法1、带你了解!微信卡五星辅助器,...