我试图使用SparkR在DataFrame的列上运行一个简单的lapply,但它给了我一个错误。我的代码如下:
ff <- sql(sqlContext, "SELECT `device`.`browser`.`cookie` FROM transactionsTbl")
showDF(ff)输出结果为:
+--------------------+
| cookie-_cc|
+--------------------+
|ZWYyNDc5NmMtZjBjN...|
|ZTU4YjhmNTYtYjI3Z...|
|YjQwNDRlNjMtNTZjZ...|
|NzNlMDFkMTQtZTBjY...|
|MjQ2NTg1ZmYtNzFiN...|
|ZWIyMzY2NGUtMmI3M...|现在,当我尝试运行简单的lapply时:
ffl <- lapply(ff$'cookie',length)我得到以下错误:
Error in as.list.default(X) :
no method for coercing this S4 class to a vector我希望将数据结构保留为DataFrame而不是data.frame,这样我就不会失去Spark的好处。请帮帮我!!提前谢谢。
发布于 2016-03-10 16:47:45
SparkR DataFrames与标准R不兼容。要访问和转换这些内容,您应该使用SQL或SparkR表达式。要查找字符串的长度,可以使用length函数
df <- createDataFrame(sqlContext, iris)
select(df, length(df$Species))https://stackoverflow.com/questions/35902725
复制相似问题