用于Apache Spark拼花数据帧的JOOQ生成器?

时间:2017-11-09 13:05:59

标签: apache-spark apache-spark-sql jooq parquet

我在一个使用JOOQ的地方工作,在后端代码的某些部分生成sql查询。已经编写了大量代码来使用它。就我而言,我想将这些功能映射到spark中,特别是在Spark SQL中通过从一堆拼花文件加载的数据帧生成查询。

是否有任何工具可以从镶木地板(或火花)模式生成DSL类?我找不到任何东西。其他方法在这个问题上取得了成功吗?

理想情况下,我希望从可能不断发展的架构中动态生成表格和字段。

我知道这是一个广泛的问题,如果它被认为超出了SO的范围,我将关闭它。

1 个答案:

答案 0 :(得分:1)

jOOQ并未正式支持Spark,但您可以使用多种方法对Spark数据库中的任何架构元数据进行反向工程:

使用JDBCDatabase

与任何其他jooq-meta Database实现一样,如果您的JDBC驱动程序支持,则可以使用JDBCDatabase反向设计通过JDBC DatabaseMetaData API可以找到的任何内容。{ / p>

将文件用作元数据源

从jOOQ 3.10版开始,您可以使用三种不同类型的“离线”元数据源来生成数据:

  • XMLDatabase将从XML文件生成代码。
  • JPADatabase将从JPA注释的实体生成代码。
  • DDLDatabase将解析DDL文件并对其输出进行反向工程(这可能不适用于Spark,因为它的语法不受官方支持)。

不使用代码生成器

当然,您没有拥有来生成任何代码。您可以直接从JDBC驱动程序(再次通过DatabaseMetaData API)获取元数据信息,该驱动程序通过DSLContext.meta()抽象,或者使用XML内容通过{{3}再次动态地向jOOQ提供模式}