小编Rog*_*ull的帖子

在INT/BIGINT和VARCHAR上的Hive连接之间是否存在可靠的性能差异?

多年来,我一直在阅读/听到关于bigint列上的数据库连接的"性能优势" OVER加入(var)char列.

不幸的是,在寻找关于'simlilar type questions'的真实答案/建议时:

  • 使用的示例位于"传统" RDBMS上下文中,如Mysql或Oracle/SQL Server.就拿这个问题,或者这个例子
  • 答案很古老,运行时的结束差异并不大.再次,请参阅此示例

没有看到使用Hive版本(最好是版本1.2.1或更高版本)的示例,其中大型(BIG-DATA-ISH)数据集(假设5亿个+行)连接到类似大小的数据集:

  1. 一个Bigint专栏
  2. VERSUS(var)Char(32)列.
  3. VERSUS(var)Char(255)列.

我选择32的大小,因为它是MD5哈希的大小,转换为字符和255,因为它是我所见过的最大自然键的"范围".

此外,我希望Hive:

  • Tez引擎下运行
  • 使用(压缩)文件格式,如ORC + ZLip/Snappy

有没有人知道这样的例子,通过展示Hive Explain计划,CPU,文件和网络资源+查询运行时证明了证据?

int varchar hive join query-performance

7
推荐指数
0
解决办法
397
查看次数

BigQuery如何按时分区表工作?

在与大量查询资料的对比,我们可以看到,它DOES从流选择数据时缓存结果,数据分区表(标准SQL).

示例: 当我们使用以下内容对流式数据分区表执行确定性日期扫描时:

where (_PARTITIONTIME > '2017-11-12' or _PARTITIONTIME is null)

...如果我们在该时间范围内触发相同的确切查询,BigQuery会将数据缓存5到20分钟.

在我对文档的解释中,它声明它不应该缓存数据:

'当查询引用的任何表最近收到流式插入(流式缓冲区附加到表)时,即使没有新行已到达'

重要笔记:

  • 我们的测试查询会查询真正连续到达我们的心跳事件
  • 我们实际上想要这种缓存行为,因为我们并不总是需要将数据实际存储到最后一秒.我们只想知道我们是否真的可以依赖这种行为.

我们的问题:

  • 这里发生了什么/为什么BQ缓存会发生?

  • 此数据在BQ缓存中保留的时间是"随机"(5-20​​分钟之间).这是什么意思?

caching google-bigquery

5
推荐指数
1
解决办法
302
查看次数

标签 统计

caching ×1

google-bigquery ×1

hive ×1

int ×1

join ×1

query-performance ×1

varchar ×1