小编Joh*_*ohn的帖子

Spark DataDrame中=== null和isNull之间的差异

当我们使用时,我对这种差异感到困惑

 df.filter(col("c1") === null) and df.filter(col("c1").isNull) 
Run Code Online (Sandbox Code Playgroud)

相同的数据帧我在=== null中得到计数,但在isNull中计数为零.请帮我理解其中的区别.谢谢

sql scala dataframe apache-spark apache-spark-sql

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

火花中密集等级和行数的差异

我试图理解密集排名和行号之间的区别.每个新窗口分区都是从1开始.一行的排名是不是总是从1开始?任何帮助,将不胜感激

apache-spark

14
推荐指数
2
解决办法
1万
查看次数

根据spark dataframe scala中的列值过滤行

我有一个数据帧(spark):

id  value 
3     0
3     1
3     0
4     1
4     0
4     0
Run Code Online (Sandbox Code Playgroud)

我想创建一个新的数据帧:

3 0
3 1
4 1
Run Code Online (Sandbox Code Playgroud)

需要删除每个id后1(值)之后的所有行.我尝试使用spark dateframe(Scala)中的窗口函数.但无法找到解决方案.看起来我正朝着错误的方向前进.

我正在寻找Scala.Thanks的解决方案

使用monotonically_increasing_id输出

 scala> val data = Seq((3,0),(3,1),(3,0),(4,1),(4,0),(4,0)).toDF("id", "value")
data: org.apache.spark.sql.DataFrame = [id: int, value: int]

scala> val minIdx = dataWithIndex.filter($"value" === 1).groupBy($"id").agg(min($"idx")).toDF("r_id", "min_idx")
minIdx: org.apache.spark.sql.DataFrame = [r_id: int, min_idx: bigint]

scala> dataWithIndex.join(minIdx,($"r_id" === $"id") && ($"idx" <= $"min_idx")).select($"id", $"value").show
+---+-----+
| id|value|
+---+-----+
|  3|    0|
|  3|    1|
|  4|    1|
+---+-----+
Run Code Online (Sandbox Code Playgroud)

如果我们在原始数据帧中进行了排序转换,那么解决方案就无法工作.那个时候monotonically_increasing_id()是基于原始DF生成的,而不是排序DF.I之前已经错过了那个要求. …

scala dataframe apache-spark apache-spark-sql

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

如何在最终的 sbt 程序集插件中排除 jar

我需要从我的最终组装 jar 中排除 spark 和 test 依赖项。我尝试使用provider但它不起作用。

libraryDependencies ++= Seq("org.apache.spark" % "spark-core_2.11" % "2.0.1" % "provided")
Run Code Online (Sandbox Code Playgroud)

并执行sbt assembly

请帮我解决这个问题。

scala dependency-management sbt-assembly apache-spark

9
推荐指数
1
解决办法
4403
查看次数

使用 scala 基于 Spark DataFrame 中现有列的聚合添加新列

我有一个如下所示的数据框。我需要根据现有列创建一个新列。

col1 col2
a      1
a      2
b      1
c      1
d      1
d      2
Run Code Online (Sandbox Code Playgroud)

输出数据帧看起来像这样

col1  col2 col3 col4
a      1   1      2
a      2   1      2
b      1   0      1
c      1   0      1
d      1   1      2
d      2   1      2
Run Code Online (Sandbox Code Playgroud)

我用来查找 col3 的逻辑是如果 col1 > 1且col4的计数是 col2 的最大值

我熟悉如何在 sql 中执行此操作。但很难找到 Dataframe DSL 的解决方案。任何帮助,将不胜感激。谢谢

scala dataframe apache-spark apache-spark-sql

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

如何使用传入的 webhook 在 slack 中提醒自定义组

我试图在 slack 中使用传入的 webhook 提醒自定义组。我可以使用 提醒用户<@user>,但是对于组,以下任何格式都不起作用

<!cgroup>
<@cgroup>
Run Code Online (Sandbox Code Playgroud)

我在这里缺少什么。提前致谢。

slack-api slack

5
推荐指数
2
解决办法
1983
查看次数

在Spark中使用前导窗口功能时是否可以忽略空值

我的数据框是这样的

id  value  date    
1   100    2017 
1   null   2016 
1   20     2015 
1   100    2014
Run Code Online (Sandbox Code Playgroud)

我想获取最新的先前值,但忽略null

id  value  date   recent value
1   100    2017    20
1   null   2016    20
1   20     2015   100
1   100    2014   null
Run Code Online (Sandbox Code Playgroud)

使用引导窗口功能时,有什么方法可以忽略空值。

scala apache-spark apache-spark-sql

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

拆分没有索引超出限制的异常

有没有简单的方法通过避免异常的索引绑定来安全地拆分?

例如:

"1-2".split("-")(1)= 2
"1".split("-")(1) = null
Run Code Online (Sandbox Code Playgroud)

scala

2
推荐指数
1
解决办法
1108
查看次数

Scala subString函数

嗨,我正在寻找一种解决方案,它将为给定索引从字符串中返回一个子字符串。为避免当前使用if和else check的索引绑定异常,是否有更好的方法(功能性)。

def subStringEn(input:String,start:Int,end:Int)={
  // multiple if check for avoiding index out of bound exception
    input.substring(start,end)
}
Run Code Online (Sandbox Code Playgroud)

functional-programming scala

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