小编Dan*_*Dan的帖子

如何将许多子集分配给它们最大的超集?

我的数据有大量数据集(几百万)。每个集合的大小都在几个成员到数万个整数之间。其中许多集合是较大集合的子集(其中有许多超集)。我试图将每个子集分配给它的最大超集。

请问有人可以推荐此类任务的算法吗?有很多算法可以生成一个集合的所有可能的子集,但是考虑到我的数据大小(例如本文SO 问题) ,这种方法是时间限制的。

我的数据集示例:

A {1, 2, 3}
B {1, 3}
C {2, 4}
D {2, 4, 9}
E {3, 5}
F {1, 2, 3, 7}
Run Code Online (Sandbox Code Playgroud)

预期答案:B和A是F的子集(B也是A的子集并不重要);C是D的子集;E 保持未分配状态。

algorithm

6
推荐指数
1
解决办法
627
查看次数

参考上传的JAR库

我已将一组支持功能记helper.jar入库并导入到 Databricks 集群。该 jar 已安装在集群上,但我无法引用库中的函数。

jar 导入已经过测试,集群已重新启动,并且可以在 InelliJ 中引用该 jar,它被开发为 Azure Spark/HDInsight 项目。

//next line generates error value helper is not a member of org.apache.spark.sql.SparkSession
import helper 

//nex line generates error: not found: value fn_conversion 
display(df.withColumn("RevenueConstantUSD", fn_conversion($"Revenue")) 
Run Code Online (Sandbox Code Playgroud)

我希望该helper函数在库部署后或可能在添加命令后可见import

编辑:添加有关 IntelliJ 项目类型的信息

scala jar apache-spark databricks

5
推荐指数
0
解决办法
811
查看次数

SKEW 连接提示的 Spark Scala 等效项

Spark SQL 有一个可用的倾斜提示(请参见此处)。是否有适用于 Spark Scala 的等效提示?

示例 这是事实表倾斜 ProductId 列的 Spark SQL 代码:

SELECT /*+ SKEW('viewFact', 'ProductId') */
    RevSumDivisionName, RevSumCategoryName, CloudAddOnFlag,
    SUM(ActualRevenueAmt) AS RevenueUSD, COUNT(*) AS Cnt
FROM viewFact
INNER JOIN viewPMST ON viewFact.ProductId = viewPMST.ProductId
INNER JOIN viewRsDf ON viewPMST.ProductFamilyId = viewRsDf.ProductFamilyId
INNER JOIN viewRevH ON viewRsDf.RevSumCategoryId = viewRevH.RevSumCategoryId
GROUP BY RevSumDivisionName, RevSumCategoryName, CloudAddOnFlag
Run Code Online (Sandbox Code Playgroud)

同样加入 Scala:

inFact
   .join(inPMst, Seq("ProductId"))
   .join(inRsDf, Seq("ProductFamilyId"))
   .join(inRevH, Seq("RevSumCategoryId"))
.groupBy($"RevSumDivisionName", $"RevSumCategoryName", $"CloudAddOnFlag")
.agg(sum($"ActualRevenueAmt") as "RevenueUSD", count($"*") as "Cnt")
Run Code Online (Sandbox Code Playgroud)

我只是无法找到偏斜提示的语法。

scala apache-spark

3
推荐指数
1
解决办法
693
查看次数

标签 统计

apache-spark ×2

scala ×2

algorithm ×1

databricks ×1

jar ×1