小编Sud*_*yam的帖子

Spark Scala - 在 GroupBy DataFrame 上应用 ML/复杂函数

我有一个大型 DataFrame(Spark 1.6 Scala),如下所示:

Type,Value1,Value2,Value3,...
--------------------------
A,11.4,2,3
A,82.0,1,2
A,53.8,3,4
B,31.0,4,5
B,22.6,5,6
B,43.1,6,7
B,11.0,7,8
C,22.1,8,9
C,3.2,9,1
C,13.1,2,3
Run Code Online (Sandbox Code Playgroud)

由此我想按类型分组并应用机器学习算法和/或对每个组执行复杂的功能。我的目标是在每个组上并行执行复杂的功能。

我尝试了以下方法:

方法1)将Dataframe转换为Dataset,然后使用ds.mapGroups()api。但这给了我每个组值的迭代器。如果我想执行RandomForestClassificationModel.transform(dataset: DataFrame),我需要一个只有特定组值的 DataFrame。我不确定在 mapGroups 中将 Iterator 转换为 Dataframe 是个好主意。

方法 2)区分类型,然后映射它们,然后在映射循环中过滤每个类型:

val types = df.select("Type").distinct()
val ff = types.map(row => {
  val type = row.getString(0)    
  val thisGroupDF = df.filter(col("Type") == type)
  // Apply complex functions on thisGroupDF    
  (type, predictedValue)
})
Run Code Online (Sandbox Code Playgroud)

出于某种原因,上述内容永远不会完成(似乎进入某种无限循环)

方法3)探索窗口函数,但没有找到可以提供特定组值的数据框的方法。

请帮忙。

scala apache-spark apache-spark-sql spark-dataframe apache-spark-mllib

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

区分大小写的Jboss 7 Web应用程序上下文根

有没有办法使Web应用程序上下文案例不敏感?

基本上我在jboss-web.xml中执行以下操作

<jboss-web>
    <context-root>cap</context-root>
</jboss-web>
Run Code Online (Sandbox Code Playgroud)

我可以通过localhost:8080/cap访问应用程序,但试图通过localhost:8080/Cap或localhost:8080/CAP访问它.有什么想法吗?

jboss7.x

4
推荐指数
1
解决办法
2021
查看次数

Spark数据帧na.fill布尔列类型

我可以使用以下方法填充Numberic和String类型列:

masterDF = masterDF.na.fill(-1)
masterDF = masterDF.na.fill("")
masterDF = masterDF.na.fill(-1.0)
Run Code Online (Sandbox Code Playgroud)

但我没有找到api来填充布尔类型列.我试过这个:masterDF = masterDF.na.fill(false)不支持.

有任何想法吗?

apache-spark

0
推荐指数
1
解决办法
1187
查看次数