要解决 AWS Glue Crawler 无法解析大文件(分类为UNKNOWN)的问题,你可以尝试以下解决方法:
import boto3
glue = boto3.client('glue')
response = glue.update_crawler(
Name='your-crawler-name',
Configuration={
'CrawlerOutput': {
'Partitions': 'true'
},
'CrawlerTimeout': 240 # 设置为 4 小时
}
)
import boto3
glue = boto3.client('glue')
response = glue.update_crawler(
Name='your-crawler-name',
Configuration={
'CrawlerOutput': {
'Partitions': 'true'
},
'MemorySize': 10240 # 设置为 10 GB
}
)
import boto3
s3 = boto3.resource('s3')
bucket_name = 'your-bucket-name'
key = 'path/to/large-file.csv'
output_key_prefix = 'path/to/output/'
bucket = s3.Bucket(bucket_name)
obj = bucket.Object(key)
file_size = obj.content_length
if file_size > 100000000: # 如果文件大小大于 100 MB
# 将文件拆分为 100 MB 的较小文件
num_parts = file_size // 100000000
# 创建输出文件夹
output_folder = s3.Object(bucket_name, output_key_prefix)
output_folder.put()
# 拆分文件
for i in range(num_parts):
start_byte = i * 100000000
end_byte = start_byte + 100000000 - 1
output_key = f'{output_key_prefix}part-{i}.csv'
# 拆分文件并上传到 S3
data = obj.get(Range=f'bytes={start_byte}-{end_byte}')['Body'].read()
s3.Object(bucket_name, output_key).put(Body=data)
# 运行 AWS Glue Crawler
glue = boto3.client('glue')
response = glue.start_crawler(
Name='your-crawler-name'
)
这些解决方法可以帮助你解决 AWS Glue Crawler 无法解析大文件的问题。根据你的具体情况选择适合的解决方法。