scala - Spark-Scala : not a member of org. apache.spark.sql.Row

标签 scala apache-spark apache-spark-sql rdd spark-dataframe

我正在尝试将数据帧转换为RDD,然后执行以下一些操作以返回元组:

df.rdd.map { t=>
 (t._2 + "_" + t._3 , t)
}.take(5)

然后我得到下面的错误。有人有主意吗?谢谢!
<console>:37: error: value _2 is not a member of org.apache.spark.sql.Row
               (t._2 + "_" + t._3 , t)
                  ^

最佳答案

当您将DataFrame转换为RDD时,您会得到一个RDD[Row],因此,当您使用map时,您的函数会收到一个Row作为参数。因此,必须使用Row方法访问其成员(请注意,索引从0开始):

df.rdd.map { 
  row: Row => (row.getString(1) + "_" + row.getString(2), row)
}.take(5)

您可以查看更多示例,并在Spark scaladoc中检查可用于Row对象的所有方法。

编辑:我不知道执行此操作的原因,但是对于连接DataFrame的String列,您可以考虑以下选项:
import org.apache.spark.sql.functions._
val newDF = df.withColumn("concat", concat(df("col2"), lit("_"), df("col3")))

关于scala - Spark-Scala : not a member of org. apache.spark.sql.Row,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37335416/

相关文章:

scala - 如何在scala中循环遍历元组

Scala:模式匹配 Seq[Nothing]

r - Sparklyr - 无法使用 copy_to 将 data.frames 复制到 Spark 中

java - 带有 spring mvc 的 scala 中的 JSR 303 ConstraintValidator

java - 如何在 apache spark 中加入两个(或更多)流(JavaDStream)

apache-spark - 如何以自定义格式加载带有时间戳的CSV?

apache-spark - Spark 和 Metastore 的关系

python - Spark数据帧是否像pandas一样每行都有 "row name"?

function - 加入PySpark时有right_anti吗?

scala - Spark历史服务器