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 我必须使用哪种支持追加的文件格式?_Amazon S3_Avro_Amazon Athena_Orc - Fatal编程技术网

Amazon s3 我必须使用哪种支持追加的文件格式?

Amazon s3 我必须使用哪种支持追加的文件格式?,amazon-s3,avro,amazon-athena,orc,Amazon S3,Avro,Amazon Athena,Orc,目前,我们用于将传入流量存储在s3中,以便进行欺诈检测分析 我们选择orc文件格式的原因如下 压缩 以及使用athena查询数据的能力 问题: 由于orc文件是只读的,我们希望每20分钟不断更新文件内容 这意味着我们 需要从s3下载orc文件 读文件 写入文件末尾 最后上传回s3 这不是问题,但随着数据每天显著增长~2GB。下载10Gb文件、读取文件、写入文件和上传文件的过程成本极高 问题: 是否有任何方法可以使用另一种文件格式,该格式还提供附录/插入,雅典娜可以使用它进行查询?

目前,我们用于将传入流量存储在s3中,以便进行欺诈检测分析

我们选择orc文件格式的原因如下

  • 压缩
  • 以及使用athena查询数据的能力
问题:

  • 由于orc文件是只读的,我们希望每20分钟不断更新文件内容 这意味着我们
    • 需要从s3下载orc文件
    • 读文件
    • 写入文件末尾
    • 最后上传回s3
这不是问题,但随着数据每天显著增长
~2GB
。下载10Gb文件、读取文件、写入文件和上传文件的过程成本极高

问题: 是否有任何方法可以使用另一种文件格式,该格式还提供附录/插入,雅典娜可以使用它进行查询?

由此可知,
avro
是文件格式,但不确定

  • 雅典娜是否可以用于查询
  • 还有其他问题吗

注意:我在大数据技术方面的技能处于初级水平

如果您的表未分区,只需将(
aws s3 cp
)您的新orc文件复制到表的目标s3路径,即可立即通过Athena进行查询

如果表已分区,则可以将新文件复制到与特定分区对应的路径。在将新文件复制到分区的最后,您需要将该分区添加或更新到Athena的metastore中

例如,如果您的表按
date
分区,则需要运行此查询以确保添加/更新分区:

alter table dataset.tablename add if not exists
   partition (date = YYYYMMDD) 
   location 's3://your-bucket/path_to_table/date=YYYYMMDD/'

你可以用雅典娜查询Avro文件-你不能每天上传一个新的ORC文件吗?Athena使用集群读取文件,如果数据分布在多个对象上,则更容易并行化。Aha感谢您的关注,但由于我们的平台要求,我们需要查询不超过20分钟的数据。更具体的要求会有所帮助,否则,我建议您使用Kinesis Firehose,并将其配置为将传入数据批量处理至
x
大小或最多
y
分钟,然后将其存储在S3中。Kinesis Firehose可以在拼花地板和ORC中实现这一点,两者都可以通过雅典娜查询-即使文件格式允许附加(例如,可以附加到CSV文件),像S3这样的对象存储也不允许附加。如果是这样,您可以在有人追加更多行时看到部分数据。推荐的方法是对传入数据进行微批处理(如Maurice建议的)。如果文件很小,那么查询这些文件的成本会很高,因此您可能需要将它们重新批处理为较大的文件。你也可以从kinesis那里得到更多的建议,但这对于摄取大量的唱片来说太贵了,无论如何,谢谢你提供的信息