Json 如何将数据从dynamo db导出到S3并进行更快的即席查询(而不是当前spark 40分钟的全表扫描查询)?

Json 如何将数据从dynamo db导出到S3并进行更快的即席查询(而不是当前spark 40分钟的全表扫描查询)?,json,amazon-s3,amazon-dynamodb,distributed-computing,bigdata,Json,Amazon S3,Amazon Dynamodb,Distributed Computing,Bigdata,我目前在一家公司的大数据团队工作,我需要将数据从dynamo db导出到amazon s3,当导出数据并使用spark对提取的半结构化JSON进行查询时,需要花费40分钟进行临时查询,并进行完整的表扫描。我读过关于ApacheDrill及其对非结构化数据进行秒查询的能力的文章,我应该继续使用ApacheDrill还是对json进行展平并将其存储为hive ORC表(10000列)?换句话说,我需要进行查询,而不需要进行完整的表扫描。嗯 如果您计划使用ApacheDrill,那么最好不要更改数据格

我目前在一家公司的大数据团队工作,我需要将数据从dynamo db导出到amazon s3,当导出数据并使用spark对提取的半结构化JSON进行查询时,需要花费40分钟进行临时查询,并进行完整的表扫描。我读过关于ApacheDrill及其对非结构化数据进行秒查询的能力的文章,我应该继续使用ApacheDrill还是对json进行展平并将其存储为hive ORC表(10000列)?换句话说,我需要进行查询,而不需要进行完整的表扫描。

如果您计划使用ApacheDrill,那么最好不要更改数据格式。使用ApacheDrill,它将对您的数据进行表扫描,如果您使用JSON,它将在S3数据中执行一个大IO。当然,这将比Spark更快地完成

但根据他们的研究,他们建议使用拼花来实现更快的SQL查询。这将由于柱状接口而减少IO。一万列不会是一个大问题,数据也会被钻取

我真的建议您将数据扁平化到Orc,这将允许您压缩数据,使用这种格式,您可以使用Presto或AWS Athena快速查询数据。使用Orc或Parquet这两种柱状数据文件的优势。它将减少读取元存储信息的IO时间。您将设置模式并完成它

要做到这一点,最大的问题是构建模式的开销。。。这对你来说将是一个巨大的开销

所以,做出你的选择。ApacheDrill将允许您以Json格式推断模式,从而减少构建模式格式等的开销,并且可能比Spark查询更快。
但不会比将文件转换为Orc或拼花格式更快。将不会那么紧凑,所以您将有更多的数据存储和更多的数据读取,这意味着更多的钱花在AWS。使用Orc或拼花地板将更快、更紧凑、更便宜。但是构建模式需要很多时间。

我也面临同样的问题。我使用kinesis和lambda将数据流传输到dynamodb,但随后我想使用Tableau之类的BI工具进行一些特殊查询。我喜欢使用Athena的想法,但为了实现这一点,我需要导出存储在s3中dynamodb中的数据。你能给我一个方法来导出数据,比如说ORC或拼花地板文件吗?我正在考虑使用一个节点js lambda。您有什么建议?@break如果您使用AWS,您可以尝试新工具AWS Glue是AWS应用程序的ETL。检查此处:这是AWS平台表单的完整管理ETL。这是一个全新的工具,是一件好事。好建议。胶水目前正在预览中,但一旦它落地,我就会试试。