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

从case类生成Spark StructType/Schema

富念
2023-03-14

如果我想从案例类中创建一个structType(即dataframe.schema),有没有一种方法可以在不创建dataframe的情况下实现它?我很容易做到:

case class TestCase(id: Long)
val schema = Seq[TestCase]().toDF.schema

但是,当我想要的只是架构时,实际创建dataframe似乎有些过头了。

(如果您很好奇,问题背后的原因是我正在定义一个UserDefinedAggregateFunction,为此,您要覆盖几个返回StructTypes的方法,并且我用例类。)

共有1个答案

秦才英
2023-03-14

您可以使用sqlcontext.createdataframe相同的方法执行此操作:

import org.apache.spark.sql.catalyst.ScalaReflection
val schema = ScalaReflection.schemaFor[TestCase].dataType.asInstanceOf[StructType]
 类似资料:
  • 问题内容: 我想要一个从JSON生成Java源文件的实用程序。例如我们有 我们将此传递给实用程序,并希望它生成如下内容: 编写起来并不难,但是我敢肯定有人已经做到了。 问题答案: 尝试: http://www.jsonschema2pojo.org Orsol,我确定你在这里还没有等待解决方案,但是为了下一个找到此线程的人,我想我会添加一些更多信息。 自从09年12月问这个问题以来发生了两件事:

  • 问题内容: 我有一个带有“逻辑”类的包(例如CheckAuthenticationDataLogic.java,GetVocabulariesLogic.java)。还有另一个类- ApiService.java用于生成wsdl。ApiService.java充满了这样的方法: 如您所见,它只是一个代理方法…所以我想避免做两次相同的工作,而无需编写ApiService.java就直接从逻辑类生成W

  • 有没有从纯Java代码生成jOOQ类的方法?如果不是,最接近的替代方案是什么?理想情况下,我希望在渐变版本中进行此操作。 我找到了这个答案,它链接到了这篇博文。这篇文章的实质是: 从JPA车型开始 将其转换为DDL脚本(.sql文件,其中包含语句) 创建一个新的HSQLDB文件,并通过在其上运行DDL脚本用表填充它。将生成的数据库保存到磁盘 从磁盘加载该数据库并在其上运行jOOQ代码生成 使用生成

  • 与JAXB为给定XSD生成JAXB类类似,Jackson是否提供了从XSD或JSON生成Jackson类的实用程序。 JAXB类geberator已经生成了一组为XSD模式定义的类。例如,对于多态类型,JAXB具有以下注释,以基于XML元素名称来标识名称。 是否可以在杰克逊中创建类似的类。即,基于XML元素名称来标识类型。

  • 然后我调用子类中的方法。 我希望有一个对象创建的基础上,子类已经被调用,如果这是有意义的?

  • 下面是一个人为的例子:(实际代码中使用的命名方案太令人困惑) 我有一个班主任,他是第三方图书馆的一部分,不可更改。我也有一些课程延伸到父亲;比如儿子。祖父有一个类似这样的构造函数: 这个构造函数中实际发生的事情并不重要。重要的是,它所做的任何事情都必须由所有派生类完成,因此对的调用是每个派生类构造函数的第一行。这里的含义是,祖父的所有后代的构造函数,无论距离有多远,都必须始终调用super(或调用