【问题标题】:How to use strsplit on SparkDataFrame如何在 SparkDataFrame 上使用 strsplit
【发布时间】:2025-11-27 13:05:02
【问题描述】:

我在Azure Databricks 世界中迈出了第一步,因此我必须学习如何使用SparkR

[我来自data.table]

虽然我已经阅读了很多文档,但我认为 SparkDataFrame 上有些东西让我无法理解。

要创建一个新列,我了解到我们可以执行以下操作:

sdf$new <- sdf$old * 0.5

但是如果我想使用一个基本功能,我得到一个错误,我不知道为什么:

sdf <- sql("select * from database.table")
sdf$new <- strsplit(sdf$old, "-")[1]

Error in strsplit((sdf$old), "-") : 
  non-character argument
Some(<code style = 'font-size:10p'> Error in strsplit((sdf$old), &quot;-&quot;): non-character argument </code>)

我错过了什么?

谢谢。

【问题讨论】:

    标签: r azure-databricks sparkr strsplit


    【解决方案1】:

    您需要使用在 Spark R API documentation 中找到的 Spark 特定函数,而不是 strsplit。具体来说,需要使用split_string函数,结合getItem函数(请注意需要指定L强制数字为整数):

    new_df <- withColumn(sdf, "new_id", getItem(split_string(sdf$old, ","), 0L))
    

    【讨论】:

    • 你的详细解释让我看得更清楚。我已经开始发现 Spark 的特定功能,但我相信我永远找不到getItem。 SparkR 对我来说似乎是一门新语言!
    • 关于 Spark 的介绍,我推荐免费书籍 - Learning Spark, 2ed - 你可以从 Databricks 网站获得它
    最近更新 更多