Etl 我们应该在雅典娜中加入复杂的解析逻辑,或者使用胶水

Etl 我们应该在雅典娜中加入复杂的解析逻辑,或者使用胶水,etl,aws-glue,amazon-athena,system-design,Etl,Aws Glue,Amazon Athena,System Design,我们在S3中有固定长度的格式文件。我们希望在将雅典娜表转换为Parque后创建它。我们有大约50-60个不同的此类文件 目前我可以想到两种方法: 在Athena表创建脚本中放入固定长度的解析逻辑 创建胶水作业,该作业将对其进行解析,然后创建Parque文件 在上面创建雅典娜表 方法1: 虽然,它可能有最少的代码,但这将在CREATETABLE脚本中。我们正在使用Teraform创建 因此,解析逻辑(Regex或Grok模式)将是Infra的一部分,我对在Infra代码中加入逻辑持怀疑态度 方法2

我们在S3中有固定长度的格式文件。我们希望在将雅典娜表转换为Parque后创建它。我们有大约50-60个不同的此类文件

目前我可以想到两种方法:

  • 在Athena表创建脚本中放入固定长度的解析逻辑
  • 创建胶水作业,该作业将对其进行解析,然后创建Parque文件 在上面创建雅典娜表
  • 方法1: 虽然,它可能有最少的代码,但这将在CREATETABLE脚本中。我们正在使用Teraform创建 因此,解析逻辑(Regex或Grok模式)将是Infra的一部分,我对在Infra代码中加入逻辑持怀疑态度

    方法2: 这将是使用Spark编写的粘合作业,它将灵活地解析固定长度的文件,我们可以为固定长度格式编写可重用代码,以用于所有不同的文件。要解析的逻辑将与开发人员共享。Athena将在Glue作业的输出位置上有外部表。Infra代码将只包含create语句


    请您提供您的看法。

    我的建议是采用方法2。使用spark的readfile方法,您可以读取大多数固定长度格式的文件并将其转换为拼花地板。如果需要,您可以在保存到拼花地板之前进行验证或快速转换。

    您不想利用Glue自定义分类器吗?忘了提到我们也尝试了Glue分类器,但在我们当前的Teraform版本中,我们可以创建分类器。所以跳过了这个方法。