gpt4 book ai didi

hadoop - 通过 levenshtein 在 Hive 或 Impala 中加入的有效方法

转载 作者:可可西里 更新时间:2023-11-01 15:00:15 25 4
gpt4 key购买 nike

我有两个表,一个包含大约 17K (NLIST) 条记录,另一个包含 57K (FNAMES) 条记录。

我想通过使用 levenshtein 公式比较记录来加入两者。

下面是表格内容的例子:

NLIST:

+------+-------------+
| ID | S_NAME |
+------+-------------+
| 1 | Avi |
| 2 | Moshe |
| 3 | David |
....

FNAMES:

+------+-------------+
| ID | NICKNAMES |
+------+-------------+
| 1 | Avile |
| 2 | Dudi |
| 3 | Moshiko |
| 4 | Avi |
| 5 | DAVE |
....

以上表格仅为示例。在实际情况下,名称列可以包含多个单词。

要求的结果应该是:

+------+-------------+--------+
| ID | NICKNAMES | S_NAME |
+------+-------------+--------+
| 1 | Avile | Avi |
| 2 | Dudi | David |
| 3 | Moshiko | Moshe |
| 4 | Avi | Avi |
| 5 | DAVE | David |
...

这是我使用的代码:

select FNAMES.NICKNAMES, NLIST.S_NAME  
from NICKNAMES
LEFT OUTER JOIN NLIST
ON(true)
WHERE levenshtein (FNAMES.NICKNAMES, NLIST.S_NAME) <=4

上面的代码运行了很长时间,我停止了它的运行。

如何让它在合理的时间内运行?

另外,我认为 levenshtein 距离取决于单词的长度。我怎样才能找到距离的最佳值(在本例中我任意选择了 4)?

最佳答案

Hive 表性能取决于各个方面。

  • 查询引擎
  • 文件格式
  • 使用 VECTORIZATION set hive.vectorized.execution.enabled = true;set hive.vectorized.execution.reduce.enabled = true;

如果你有好的服务器,你可以试试 Impala,它肯定比 Hive 快。

您可以对 impala 进行微调,这将使您有优势更快地执行此查询。 Tuning Impala for Performance

关于hadoop - 通过 levenshtein 在 Hive 或 Impala 中加入的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42802959/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com