【问题标题】:Combine two columns in SparkR在 SparkR 中合并两列
【发布时间】:2016-04-05 18:29:28
【问题描述】:

在 SparkR 中合并两列的简单方法是什么?考虑关注 Spark DF:

salary_from  salary_to  position
1500         null       a
null         1300       b
800          1000       c

我想将salary 列与这样的逻辑结合起来。从salary_fromsalary_to 中取一个不为空的值,如果两者都存在,则取一个中间的值。

salary_from  salary_to  position  salary
1500         null       a         1500
null         1300       b         1300
800          1000       c         900

有没有办法遍历每一行并应用我的逻辑,就像我在 R 中使用 apply 方法一样?

【问题讨论】:

  • 我听说有一个结合了 sparkr 和 dplyr 的包 sparkrext,但我没有使用它 github.com/hoxo-m/SparkRext。也许它可以帮助你..

标签: r apache-spark sparkr


【解决方案1】:

你可以使用coalesce函数:

withColumn(
  sdf, "salary",
  expr("coalesce((salary_from + salary_to) / 2, salary_from, salary_to)")
)

返回第一个非空表达式。

【讨论】:

  • 我在 SparkR API 参考 spark.apache.org/docs/latest/api/R/index.html 中找不到合并。你能指出我在哪里可以找到更多关于它的信息吗?
  • 你不能,因为它还没有。这就是您需要 expr 的原因。否则只是一个普通的 SQL coalesce 所以任何 SQL 引用都可以。例如w3schools.com/sql/sql_isnull.asp。或 PySpark 文档字符串:github.com/apache/spark/blob/master/python/pyspark/sql/…
  • 有没有办法循环遍历 Spark Data Frame 的行?
  • 除了获取一个完整的结构给驱动程序?没有。
  • 这一切对我来说听起来就像 SparkR 不完整且效率低下。你不这么认为吗?或者我只是误解了它的用途。
猜你喜欢
  • 1970-01-01
  • 2017-01-14
  • 2016-12-15
  • 1970-01-01
  • 1970-01-01
  • 2022-11-04
  • 2020-10-16
  • 1970-01-01
  • 2016-12-19
相关资源
最近更新 更多