apache-spark - Apache Spark Parquet 数据帧的 JOOQ 生成器?

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

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

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

理想情况下,我希望根据可能不断发展的模式动态生成表和字段。

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

最佳答案

jOOQ 不正式支持 Spark,但您有多种选择可以对 Spark 数据库中的任何模式元数据进行逆向工程:

使用JDBCDatabase

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

使用文件作为元数据源

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

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

不使用代码生成器

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

关于apache-spark - Apache Spark Parquet 数据帧的 JOOQ 生成器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47202617/

相关文章:

python - 无法在 ipython 中正确创建 spark 上下文以链接到 MySQL - com.mysql.jdbc.Driver

scala - 两个 RDD 的元素并集

postgresql - 加载 PostgreSQL 表时,SQL 子查询在 Spark 2 中失败

apache-spark - PySpark-如何使用一列中的行值访问与行值同名的另一列

java - Intellij IDEA : How to set up Imported Maven Project Correctly?

apache-spark - 仅使用 spark sql 在表/ View 中删除列

pandas - 如何使用 Spark2 和 Scala 获取不同值、数据帧中列的计数并作为 (k,v) 对存储在另一个数据帧中

python - 根据列值重复字符串(就像Python中字符串和数字的乘法)

java - 通过使用 schema 和表名使用 jooq 生成 DDL

postgresql - 调用聚合函数 JOOQ 的别名列结果