【问题标题】:Selecting a single column doesn't seem to reduce the amount of data scanned in AWS Athena选择单个列似乎不会减少 AWS Athena 中扫描的数据量
【发布时间】:2019-03-19 19:59:39
【问题描述】:

我正在尝试使用 Athena 查询存储在 s3 中镶木地板中的数据。 我在daystamp 列上添加了一个分区,正如预期的那样,当我创建一个使用它的查询时,它减少了扫描的数据量。

但是,当我在SELECT 语句中限制要返回的列时,我希望它会再次减少扫描的数据量,但事实并非如此,它只会加快查询速度。

我认为它会减少扫描的数据量是错误的吗?

以下示例:(运行时间从 11s 减少到 5s,但扫描的数据仍为 2.08MB)

选择 *


选择“列”


选择“column.field”

编辑:

已添加SHOW CREATE TABLE logdata

CREATE EXTERNAL TABLE `logdata`(
  `cells` struct<voltages:array<double>,temperatures:array<int>,capacities:array<double>,soc:array<double>,duty:array<int>,resistance:array<double>> COMMENT 'from deserializer', 
  `pack` struct<outputvoltage:string,packvoltage:string,current:string> COMMENT 'from deserializer', 
  `timestamp` string COMMENT 'from deserializer')
PARTITIONED BY ( 
  `daystamp` string, 
  `deviceid` string)
ROW FORMAT SERDE 
  'org.openx.data.jsonserde.JsonSerDe' 
WITH SERDEPROPERTIES ( 
  'paths'='cells,daystamp,deviceId,pack,timestamp') 
STORED AS INPUTFORMAT 
  'org.apache.hadoop.mapred.TextInputFormat' 
OUTPUTFORMAT 
  'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
  's3://bucketname/v1/logdata/'
TBLPROPERTIES (
  'CrawlerSchemaDeserializerVersion'='1.0', 
  'CrawlerSchemaSerializerVersion'='1.0', 
  'UPDATED_BY_CRAWLER'='ndjsonToParquet', 
  'averageRecordSize'='378', 
  'classification'='json', 
  'compressionType'='none', 
  'objectCount'='162', 
  'recordCount'='232193', 
  'sizeKey'='88003003', 
  'typeOfData'='file')

【问题讨论】:

  • 在我看来,你应该用更多的数据来执行这个测试,然后你应该会看到差异。
  • 这个想法闪过我的脑海,但单元格列是 10 列之一,所以虽然它可能有一些开销,但我不明白为什么我不会得到 some减少。否则,我想知道 UI 中的数据扫描字段是否只显示分区的减少而不是选择
  • 我做了一些测试,效果很好。你能发送你的表的定义吗?显示创建表日志数据;
  • 谢谢@j.b.gorski。我已经用回复更新了问题
  • 由此看来,查询实际上是在 json 文件上,而不是 parquet 上。我想我的消防软管/胶水设置一定有问题。你同意吗?

标签: parquet amazon-athena


【解决方案1】:

是的,确实如此。你不在你的桌子上使用镶木地板格式。正确的表应该像这样使用 SerDe:

org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe

你需要先转换这些数据,你也可以转换结构和数组类型。您可以在 Athena 中使用 AWS GLUE 或 CTAS 命令来执行此操作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-23
    • 2020-11-30
    • 1970-01-01
    • 2019-11-11
    • 2022-11-21
    • 1970-01-01
    • 2015-08-22
    相关资源
    最近更新 更多