Google bigquery 具有编辑距离UDF的BigQuery查询抛出错误

Google bigquery 具有编辑距离UDF的BigQuery查询抛出错误,google-bigquery,user-defined-functions,sql-standards,Google Bigquery,User Defined Functions,Sql Standards,我试图使用编辑距离算法来比较文章之间的内容。我在标准查询中创建了一个自定义项。当文章数较少时,如10篇文章,总比较为10X10=100时,它工作良好 如果文章的总数很大,比如100篇,那么总比较是100x100=10000。BigQuery UI引发以下错误: 错误:发生内部错误,请求无法完成。 作业ID:Papers-142716:US.bquijob_cfbb316_161c359b4ec 我想知道这是否是因为BigQuery在调用UDF时无法处理那么多数据。编辑距离算法不是便宜的操作,这也

我试图使用编辑距离算法来比较文章之间的内容。我在标准查询中创建了一个自定义项。当文章数较少时,如10篇文章,总比较为10X10=100时,它工作良好

如果文章的总数很大,比如100篇,那么总比较是100x100=10000。BigQuery UI引发以下错误:

错误:发生内部错误,请求无法完成。 作业ID:Papers-142716:US.bquijob_cfbb316_161c359b4ec

我想知道这是否是因为BigQuery在调用UDF时无法处理那么多数据。编辑距离算法不是便宜的操作,这也是原因吗

为此目的使用UDF是正确的方法吗?还有其他选择吗

下面是我的自定义项代码:

创建临时函数 editDistancea字符串,b字符串 返回浮点64 语言js 像 ifa.length==0返回b.length; 如果b.length==0,则返回a.length; var矩阵=[]; //沿每行的第一列递增 var i; fori=0;我 我想知道是不是因为BigQuery无法处理那么多的数据 调用UDF时的数据

你是对的-你工作的实际错误是

分配失败-JavaScript堆内存不足

我想每一篇文章都很长,可能只有几KBs,所以在函数中构建的矩阵是几MBs。
这种类型的交叉连接处理可能更适合于数据流或其他批处理工具。要在BigQuery中执行此操作,您需要将表拆分为更小的部分,或者将每一篇文章作为单独的查询来运行,但这将导致多次扫描,而且成本高昂。

谢谢Mosha。我们公司使用了很多谷歌产品/服务。我将研究数据流和/或尝试其他解决方案