【问题标题】:JOOQ generator for Apache Spark parquet dataframes?Apache Spark parquet 数据帧的 JOOQ 生成器?
【发布时间】:2018-04-22 11:49:15
【问题描述】:

我在一个地方工作,我们在后端代码的某些部分使用 JOOQ 生成 sql 查询。已经编写了很多代码来使用它。就我而言,我想将这些功能映射到 spark 中,尤其是在 Spark SQL 中对从一堆 parquet 文件加载的数据帧生成查询。

是否有任何工具可以从 parquet(或 spark)模式生成 DSL 类?我找不到任何东西。其他方法在这个问题上已经成功了吗?

理想情况下,我想根据可能不断变化的架构动态生成表和字段。

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

【问题讨论】:

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


    【解决方案1】:

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

    使用JDBCDatabase

    与任何其他 jooq-meta Database 实现一样,如果您的 JDBC 驱动程序支持,您可以使用 JDBCDatabase 对通过 JDBC DatabaseMetaData API 可以找到的任何内容进行逆向工程。

    使用文件作为元数据源

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

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

    不使用代码生成器

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

    【讨论】:

    • 感谢您的回答.. 但我不确定这对我的问题有多大帮助。我仍然必须弥合火花模式和 [占位符] 格式 jooq 理解之间的差距。生成任何 TableImpl 和 Field jooq 使用的工作量相同。
    • [placeholder] format jooq 理解是什么意思?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-21
    • 2020-08-21
    • 1970-01-01
    • 2021-12-20
    • 2020-01-31
    • 2015-11-30
    相关资源
    最近更新 更多