从单独的文件指定AWS Glue爬虫的列



我正在使用Glue爬虫在Athena中为外部提供者生成的一组CSV文件创建一个表。这些文件没有头文件,而是附带一个单独的单行CSV文件来指定头文件。这里有1000多个列,所以最后的办法是手动编辑模式,根据Glue的默认值col0、col1、col2来命名列。是否有一种方法可以告诉Glue/Athena从单独的文件中选择列名而不是数据?

我能够使用带有update_table方法的boto3来做到这一点。大部分解决方案都在AWS Glue上——如何使用BOTO3更改Glue Catalog表中的列名?它给出了一个重命名单个列的示例。为了根据外部文件重命名所有列,而不是使用单列方法,我使用了以下方法:

with open('column_headers.tsv') as cfile:
creader = csv.reader(cfile, delimiter='t')
for row in creader:
colnames = row

old_colnames = [oc['Name'] for oc in old_table['StorageDescriptor']['Columns']]
col_map = dict(zip(old_colnames, colnames))  
for col in new_table['StorageDescriptor']['Columns']:
col['Name'] = col_map[col['Name']]

client.update_table(DatabaseName=db_name, TableInput=new_table)    

相关内容

  • 没有找到相关文章

最新更新