这是我的问题
我有两张桌子(10M和2500万行)。我想比较这两个表的地址。
我的解决方案是创建一个UDF(adress1,adress2)(使用Jaccard)
String joinSql = "SELECT "
+ "a.name, a.firstame, Jaccard(a.adress1,b.adress2) as jaccard "
+ "FROM tmp_tableA as a, tmp_tableB as b "
+ "where (Jaccard(a.adress1,b.adress.2) > 0.8);
System.out.println(joinSql);
Dataset<Row> dfr = spark.sql(joinSql);
它有效,但需要很长时间。我该如何优化呢?
答案 0 :(得分:1)
MinHashLSH
可用于approxSimilarityJoins
,大致相当于Jaccard距离。
您可以查看:
了解详情。
我对Efficient string matching in Apache Spark的回答显示了如何准备数据。