Scala 无法获取spark数据帧的第一个()
我正在尝试使用spark将数据从s3存储桶加载到我的emr笔记本(它位于运行spark 2.4的emr集群上) 我已经创建了EMR笔记本,它创建了一个sparkSession作为spark,并且可以分配Scala 无法获取spark数据帧的第一个(),scala,apache-spark,apache-spark-sql,jupyter-scala,Scala,Apache Spark,Apache Spark Sql,Jupyter Scala,我正在尝试使用spark将数据从s3存储桶加载到我的emr笔记本(它位于运行spark 2.4的emr集群上) 我已经创建了EMR笔记本,它创建了一个sparkSession作为spark,并且可以分配 val connections = data.select("col1", "col2").rdd.distinct().flatMap(x => Iterable(x(0).asInstanceOf[Number].longValue, x(1).asInstanceOf[Numbe
val connections = data.select("col1", "col2").rdd.distinct().flatMap(x =>
Iterable(x(0).asInstanceOf[Number].longValue,
x(1).asInstanceOf[Number].longValue)).distinct().toDF()
我得到了答复
连接:org.apache.spark.sql.DataFrame=[value:bigint]
但是,当我运行时,这是预期的:
connections.first()
我得到输出:
org.apache.spark.SparkException:作业因阶段失败而中止:阶段8.0中的任务0失败了4次,最近的失败:阶段8.0中的任务0.3丢失(TID 55,ip-10-0-251-222.ec2.internal,executor 4):java.lang.ClassCastException:[B无法转换为java.lang.Number
(另外还有大约100行,它不允许我添加)
为什么我不能获取满是bigint的数据帧的第一个值?您的起始数据帧data中有一个字符串,不能转换为数字 java.lang.ClassCastException:[B不能转换为java.lang.Number
可能的重复应该不需要转换为rdd、flatmap和转换回dataframe。如果添加一些示例输入/预期输出,可能会找到更好的解决方案。