Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon s3 是否可以更改AWS athena输出文件的分隔符_Amazon S3_Amazon Athena - Fatal编程技术网

Amazon s3 是否可以更改AWS athena输出文件的分隔符

Amazon s3 是否可以更改AWS athena输出文件的分隔符,amazon-s3,amazon-athena,Amazon S3,Amazon Athena,下面是我的示例代码,我使用AWS Athena在S3 bucket中创建了一个文件。默认情况下,该文件为csv格式。有没有办法将其更改为管道分隔符 导入json 进口boto3 def lambda_handlerevent,上下文: s3=bot3.客户端's3' 客户=boto3.客户“雅典娜” 启动查询执行 响应=client.start\u query\u执行 质询= 从srvgrp中选择* 其中类别\ U代码='ACOMNCDU' , QueryExecutionContext={ “

下面是我的示例代码,我使用AWS Athena在S3 bucket中创建了一个文件。默认情况下,该文件为csv格式。有没有办法将其更改为管道分隔符

导入json 进口boto3 def lambda_handlerevent,上下文: s3=bot3.客户端's3' 客户=boto3.客户“雅典娜” 启动查询执行 响应=client.start\u query\u执行 质询= 从srvgrp中选择* 其中类别\ U代码='ACOMNCDU' , QueryExecutionContext={ “数据库”:“tmp_db” }, 结果配置={ “OutputLocation”:“s3://tmp results/athena/” } queryId=响应['QueryExecutionId'] 打印“查询id为:”+strqueryId
有一种方法可以做到这一点

但是:

这是一种黑客方式,而不是CTAS查询应该用于的,因为它还将在AWS Glue数据目录中创建一个新的表定义。 我对性能没有把握 创建表UNIQU_前缀_uu_u新建_u表 具有 格式='TEXTFILE', 外部位置='s3://tmp results/athena/\uuuuuu SOMETHING\u UNIQUE\uuuuuuuuuu', 字段_分隔符='|', bucketed_by=数组[''''u某些列''u'], 桶计数=1 像 挑选* 来自srvgrp 其中类别\ U代码='ACOMNCDU' 注:

设置bucket_count=1很重要,否则Athena将创建多个文件

创建_表中的表的名称。。。也应该是唯一的,例如使用时间戳前缀/后缀,您可以在python运行时注入该前缀/后缀

外部位置应该是唯一的,例如,使用可以在python运行时注入的时间戳前缀/后缀。我建议将表名嵌入到S3路径中

您只需要在SELECT中的一列中包含Buckted\u

在某些时候,您需要从以这种方式创建的所有表定义中清除AWS Glue数据目录


似乎没有用于更改保存在OutputLocation中的文件格式的选项。