【发布时间】:2016-09-21 15:22:10
【问题描述】:
我正在使用 SparkR,并希望使用 substr() 命令来隔离列中包含的字符串的最后一个字符。如果我将 StartPosition 和 EndPosition 设置为常量,我可以让 substr() 工作:
substr(sdfIris$Species, 8, 8)
但是当我尝试使用来自 DataFrame 的值设置这些参数时:
sdfIris <- createDataFrame(sqlContext, iris)
sdfIris$Len <- length(sdfIris$Species)
sdfIris$Last <- substr(sdfIris$Species, sdfIris$Len, sdfIris$Len)
as.integer(start - 1) 中的错误:无法将“S4”类型强制转换为“整数”类型的向量
看来sdfIris$Len返回的结果可能是单格DataFrame,参数需要整数。
我试过collect(sdfIris$Len),但是:
(函数(类,fdef,mtable)中的错误:无法为签名“列”的函数“收集”找到继承的方法
这似乎不协调。 substr() 似乎将 sdfIris$Len 视为 DataFrame,但 collect() 似乎将其视为 Column。
我已经通过使用registerTempTable 并使用 SparkSQL 的 substr 来隔离最后一个字符来确定一种解决方法,但我希望避免切换到 SQL 的不必要步骤。
如何在具有动态 Start 和 Finish 参数的 DataFrame 列上使用 SparkR substr()?
【问题讨论】:
标签: r apache-spark dataframe substr sparkr