Scala Spark错误:不支持的文字类型类sql.catalyst.expressions.GenericRowWithSchema
Spark错误:不支持的文字类型类sql.catalyst.expressions.GenericRowWithSchema 我正在执行以下命令:Scala Spark错误:不支持的文字类型类sql.catalyst.expressions.GenericRowWithSchema,scala,apache-spark,apache-spark-sql,Scala,Apache Spark,Apache Spark Sql,Spark错误:不支持的文字类型类sql.catalyst.expressions.GenericRowWithSchema 我正在执行以下命令: crimeDF.where($"IncidntNum ===" +a(0)) 但是得到这个错误: java.lang.RuntimeException:不支持的文本类型类org.apache.spark.sql.catalyst.expressions.GenericRowWithSchema[991309046] 位于org.apache.sp
crimeDF.where($"IncidntNum ===" +a(0))
但是得到这个错误:
java.lang.RuntimeException:不支持的文本类型类org.apache.spark.sql.catalyst.expressions.GenericRowWithSchema[991309046]
位于org.apache.spark.sql.catalyst.expressions.Literal$.apply(literals.scala:77)
位于org.apache.spark.sql.catalyst.expressions.Literal$$anonfun$create$2.apply(literals.scala:163)
位于org.apache.spark.sql.catalyst.expressions.Literal$$anonfun$create$2.apply(literals.scala:163)
在scala.util.Try.getOrElse(Try.scala:79)
位于org.apache.spark.sql.catalyst.expressions.Literal$.create(literals.scala:162)
位于org.apache.spark.sql.functions$.typedLit(functions.scala:112)
位于org.apache.spark.sql.functions$.lit(functions.scala:95)
位于org.apache.spark.sql.Column.$plus(Column.scala:648)
... 76删去
您试图将整个行作为文本传递。在后续查询中使用该行之前,先从该行中提取该值:
crimeDF.where($"IncidntNum" === a(0).getInt(0))
或
取决于输出中的数字是Int
s还是String
s。您正试图将整个行作为文本传递。在后续查询中使用该行之前,先从该行中提取该值:
crimeDF.where($"IncidntNum" === a(0).getInt(0))
或
取决于输出中的数字是Int
s还是String
s。您应该这样做
var a = crimeDF.select(max($"IncidntNum")).take(1)(0).getAs[Int](0)
然后
crimeDF.where($"IncidntNum" === a)
或
你应该做什么
var a = crimeDF.select(max($"IncidntNum")).take(1)(0).getAs[Int](0)
然后
crimeDF.where($"IncidntNum" === a)
或
我在一个现在被删除的答案中提出了crimeDF.where($“incidnum”==a(0))
,但显然它也不起作用。它不应该是IncidentNum
吗?也许你应该提供更多关于crimeDF
和a
是什么的信息。试着找出一个相同的错误,其中($“incidnum”==lit(a(0)))在执行此命令时是什么是a(0)还是a?根据您的建议,我已经做出了所需的修改,现在我希望它会变得清晰。在现在删除的答案中,我提出了crimeDF。其中($“incidnum”==a(0))
,但显然它也不起作用。它不应该是IncidentNum
吗?也许你应该提供更多关于crimeDF
和a
是什么的信息。尝试在执行此命令时出现一个相同的错误($“incidnum”===lit(a(0))。什么是a(0)或a?根据您的建议,我已经做了所需的修改,现在我希望可以清楚地看到我得到了这个错误java.lang.ClassCastException:java.lang.String不能在org.apache.spark.sql.Row$class.getInt(Row.scala:223)的scala.runtime.BoxesRunTime.unextoint(BoxesRunTime.java:101)中转换为java.lang.Integer在org.apache.spark.sql.catalyst.expressions.GenericRow.getInt(rows.scala:165)上。。。77elided@AmanRaturi那么,它是一个字符串
,而不是Int
。改为使用getAs[String]
。如果您没有提供完全可编译的代码,我该如何判断991309046
是存储为字符串还是Int。。。好的,事实上,我可以从您刚刚加载一个CSV文件这一事实推断出这一点,该文件将生成一系列带字符串的行。仍然:没有独立的可编译/可执行示例,这就是结果…@Andrey Tyukin感谢您的支持support@AmanRaturi不客气。但是,“谢谢”-评论是(另请参阅),因为它们无助于改进答案,因此对内容没有任何贡献。改用新的。此外,@
-通知机制不适用于空格。我得到以下错误:java.lang.ClassCastException:java.lang.String不能在org.apache.spark.sql.Row$class.getInt(Row.scala:223)的scala.runtime.BoxesRunTime.unextoint(BoxesRunTime.java:101)中转换为java.lang.Integer在org.apache.spark.sql.catalyst.expressions.GenericRow.getInt(rows.scala:165)上。。。77elided@AmanRaturi那么,它是一个字符串
,而不是Int
。改为使用getAs[String]
。如果您没有提供完全可编译的代码,我该如何判断991309046
是存储为字符串还是Int。。。好的,事实上,我可以从您刚刚加载一个CSV文件这一事实推断出这一点,该文件将生成一系列带字符串的行。仍然:没有独立的可编译/可执行示例,这就是结果…@Andrey Tyukin感谢您的支持support@AmanRaturi不客气。但是,“谢谢”-评论是(另请参阅),因为它们无助于改进答案,因此对内容没有任何贡献。改用新的。而且,@
-通知机制不适用于空格。你能帮我用这个吗
crimeDF.where($"IncidntNum" === lit(a))