我需要使用DBSCAN对雪花中的一些数据进行聚类。我创建了一个UDF,但是结果与本地运行的结果不匹配,所以我运行了一个UDF,它只创建一个带有正在处理的行号的列表,它导致一个具有重复值的列表,它的最大值远小于我表中的行数。(预期结果是行数以下的唯一值),这是否是并行化问题?如果是这样的话,是否有一种方法可以使用雪花中的DBSCAN对数据进行聚类?
谢谢!
编辑->代码示例:
@funcs.pandas_udf(name='DBSCAN_TEST', is_permanent=True,
stage_location='@UDF', replace=True,
packages=['scikit-learn==1.0.2', 'pandas', 'numpy'])
def DBSCAN_TEST(data_x: types.PandasDataFrame[float, float]) -> types.PandasSeries[float]:
data_x.columns = [features]
DBSCAN_cluster = DBSCAN(eps=2.5, min_samples=4)
DBSCAN_cluster.fit(data_x)
return resul作为输入数据,我使用这测试DBSCAN。
如果我在本地运行(在UDF中使用完全相同的代码),我将得到24个集群,这是预期的结果。但是如果我使用UDF,它的比例可以达到71。
我尝试过将输入类型更改为string,就像一位同事建议的那样,但没有起作用。
发布于 2022-08-24 20:09:43
雪花中唯一的聚类选项是集群键,一般的经验法则是,在表中的TB数据和/或自动集群被证明性能不足之前,这并不是通常所需要的。
https://docs.snowflake.com/en/user-guide/tables-clustering-keys.html
https://stackoverflow.com/questions/73478698
复制相似问题