我有两张相同的桌子;一个是在 .csv 上使用爬网程序创建的,另一个是使用以下命令创建的 Iceberg 表:
CREATE TABLE dan_grafana.iced (
meter string,
readtime timestamp,
kwh_total double)
PARTITIONED BY (`meter`, year(`readtime`))
LOCATION 's3://dev-aws/iceberg/iced'
TBLPROPERTIES (
'table_type'='iceberg',
'format'='parquet',
'optimize_rewrite_delete_file_threshold'='10',
'write_target_data_file_size_bytes'='134217728'
);
创建 Iceberg 表后,我将 .csv 文件中的数据复制到其中;这是我在 Iceberg 表上执行的唯一操作。尽管成本相同,但从 Iceberg 表中读取数据所需的时间是读取普通 .csv 文件的两倍。读取 Iceberg 表时扫描的字节数是原来的 5 倍。
如何提高 Iceberg 表的性能?
正如正确建议的那样,这不是比较 Iceberg 格式表与基于 csv 的表性能的最佳方法。是的,您需要增加数据量。还可以尝试创建分区表,因为您将在其中看到真正的差异,即根据分区列过滤数据。您还可以向冰山表添加排序并在查询中使用这些列,这将进一步提高由于谓词下推而导致的性能。