当前位置: 首页 > 知识库问答 >
问题:

不支持Spark 2.1.0 UDF Schema类型

端木元青
2023-03-14

我正在使用一种称为点(x:双精度,y:双精度)的数据类型。我正在尝试使用_c1列和_c2作为Point()的输入,然后创建一个新的Point值列,如下所示

val toPoint = udf{(x: Double, y: Double) => Point(x,y)}

然后我调用函数:

val point = data.withColumn("Point", toPoint(watned("c1"),wanted("c2")))

但是,当我声明udf时,我得到了以下错误:

java.lang.UnsupportedOperationException: Schema for type com.vividsolutions.jts.geom.Point is not supported
      at org.apache.spark.sql.catalyst.ScalaReflection$.schemaFor(ScalaReflection.scala:733)
      at org.apache.spark.sql.catalyst.ScalaReflection$$anonfun$schemaFor$2.apply(ScalaReflection.scala:729)
      at org.apache.spark.sql.catalyst.ScalaReflection$$anonfun$schemaFor$2.apply(ScalaReflection.scala:728)
      at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:234)
      at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:234)
      at scala.collection.immutable.List.foreach(List.scala:381)
      at scala.collection.TraversableLike$class.map(TraversableLike.scala:234)
      at scala.collection.immutable.List.map(List.scala:285)
      at org.apache.spark.sql.catalyst.ScalaReflection$.schemaFor(ScalaReflection.scala:728)
      at org.apache.spark.sql.catalyst.ScalaReflection$.schemaFor(ScalaReflection.scala:671)
      at org.apache.spark.sql.functions$.udf(functions.scala:3084)
      ... 48 elided

我已经正确导入了此数据类型,并且之前多次使用它。现在我尝试将其包含在我的udf的架构中,它无法识别它。包含标准Int,字符串,数组等以外的类型的方法是什么?

我在亚马逊EMR上使用火花2.1.0。

以下是我提到的一些相关问题:

如何定义自定义类型在火花SQL?

Spark UDF错误-不支持任何类型的架构

共有1个答案

谢墨竹
2023-03-14

应将 Point 定义为案例类

case class Point(x: Double, y: Double)

或者,如果你愿意

case class MyPoint(x:Double,y:Double) extends com.vividsolutions.jts.geom.Point(x,y)

这样,Spark会自动推断出模式

 类似资料:
  • 问题内容: 自数小时以来,我一直在尝试纠正http错误,但它仍显示不支持的页面。我在邮递员中添加标题。 这是我的Java代码 这是我的档案 问题答案: 通过和如何在响应流和请求流之间对对象进行序列化和反序列化。 将会发生的是,将从提供者的注册表中进行搜索,以查找可以处理的媒体类型。如果找不到,则Jersey无法处理该请求,并将发送415不支持的媒体类型。通常,你还应该在服务器端记录一个异常。不知道

  • 问题内容: 我在课堂上有一个Ctrl-drag作为。现在我正在使用此代码 当我在模拟器上启动我的应用程序并单击时,我收到了此日志 我没有崩溃或发生什么事,但是没有显示键盘。我也尝试从中进行设置,但相同。 我还注意到,无论何时单击 任何 键盘,都不会显示(但 默认 键盘不会显示日志) 我正在使用Xcode-Beta 3,有人遇到过此问题吗? 问题答案: 更新到最新的Xcode Beta之后,我也遇到

  • 我已经创建了一个示例web服务来进行post调用。 我使用的是Jersey JAX-RS和Maven。

  • 我正在用Spring Boot构建一些API,但是当我试图用Postman查询时,我得到了一些关于Content-Type的错误。 我不明白哪里出了问题。 我注意到错误消失时,我删除了@刚体作为参数的方法。为什么啊? 我只想: 将XML发送到API

  • 我想在Android项目中使用logback-android。这是我所做的 null 谢谢你!

  • 我有一个方法来计算< code > div 中元素的数量并返回它们的数目。 这是页面源代码 WebDriver引发以下错误:不支持复合类名。考虑搜索一个类名并过滤结果,或者使用CSS选择器。 编辑: 结果是< code>WerbDriver不支持类名中的空格,omg。 你们能帮我在这种情况下使用< code>CSS选择器来找到元素吗?