小编d12*_*25q的帖子

在Spark SQL中聚合大型数据集

请考虑以下代码:

case class Person(
  personId: Long, name: String, ageGroup: String, gender: String,
  relationshipStatus: String, country: String, state: String
)

case class PerPersonPower(personId: Long, power: Double)

val people: Dataset[Person] = ...          // Around 50 million entries.
val powers: Dataset[PerPersonPower] = ...  // Around 50 million entries.

people.join(powers, "personId")
  .groupBy("ageGroup", "gender", "relationshipStatus", "country", "state")
  .agg(
    sum("power").alias("totalPower"),
    count("*").alias("personCount")
  )
Run Code Online (Sandbox Code Playgroud)

它在具有大约100 GB RAM的群集上执行.但是,群集内存不足.我不知道该怎么做.实际上,people被分区$"personId"和缓存 - people.repartition($"personId").cache().

我有什么想法可以优化这个计算?

该集群是一个普通的Google Dataproc集群---因此它在客户端模式下使用YARN--由14个节点组成,每个节点具有8 GB RAM.

scala apache-spark apache-spark-sql google-cloud-dataproc apache-spark-dataset

5
推荐指数
1
解决办法
536
查看次数

参数化类中的静态嵌套类

我正在查看实现这里显示的二叉搜索树的Java代码,我认为如果内部类Node实际上变成静态嵌套类会更好.但是,static在前面添加关键字(我以为我可以这样做,因为内部类实际上并没有使用封闭类的实例 - 我可以在Node内部类中访问的那个BST.this- 它绑定到它)导致多个错误,这些错误并非极其有用.

据我所知,java.util.LinkedList类似的也使用静态嵌套类来定义存储在里面的节点,并且也参数化(当然,工作没有任何问题).有人在意吗?

谢谢.

java

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

类型中的类型与值构造函数

我正在学习Haskell,并对此示例感到困惑.

考虑以下:

class Tofu t where
    tofu :: j a -> t a j

data Frank a b = Frank {frankField :: b a} deriving (Show)

instance Tofu Frank where
    tofu x = Frank x
Run Code Online (Sandbox Code Playgroud)

为什么在创建Frank实例时Tofu,我们提供(据我所知)一个类型构造函数Frank x,而不是值构造函数,即tofu x = Frank {frankField = x}

haskell typeclass

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