【问题标题】:Hadoop partitioning. How do you efficiently design a Hive/Impala table?Hadoop 分区。您如何有效地设计 Hive/Impala 表?
【发布时间】:2016-09-02 16:26:25
【问题描述】:

考虑到以下事实,您如何有效地设计 Hive/Impala 表?

  1. 表每接收约1亿行刀具数据 天。它接收数据的日期存储在 表格及其工具 ID。
  2. 每个工具接收大约 每天 500 次运行,由列运行 ID 标识。每个运行 id 包含大小约为 1 mb 的数据。
  3. 块的默认大小为 64 mb。
  4. 可以按日期、工具ID、运行ID依次搜索表格。

【问题讨论】:

  • 到目前为止你考虑了什么?
  • Welcome to SO! 请更新你的发现,否则问题会变得太宽泛!

标签: hadoop hive impala hadoop-partitioning


【解决方案1】:

如果您要对这些数据进行分析,那么使用 Impala 的可靠选择是使用 Parquet 格式。对我们的用户来说行之有效的方法是根据记录上的日期值按年、月、日对日期进行分区。

例如 CREATE TABLE foo (tool_id int, eff_dt timestamp) 分区(year int, month int, day int)存储为parquet

当将数据加载到这个表中时,我们使用这样的东西来创建动态分区:

INSERT INTO foo partition (year, month, day)
SELECT tool_id, eff_dt, year(eff_dt), month(eff_dt), day(eff_dt)
FROM source_table;

然后您训练您的用户,如果他们想要最佳性能,请将 YEAR、MONTH、DAY 添加到他们的 WHERE 子句中,以便它击中分区以获得更好的性能。然后让他们在SELECT 语句中添加eff_dt,这样他们就有了他们喜欢在最终结果中看到的格式的日期值。

在 CDH 中,Parquet 默认以 256MB 的块存储数据(这是可配置的)。以下是如何配置它:http://www.cloudera.com/documentation/enterprise/latest/topics/impala_parquet_file_size.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-07
    • 1970-01-01
    • 2020-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-15
    相关资源
    最近更新 更多