首页 > 解决方案 > 如何执行 SQL 文件中定义的多个 SQL 查询

问题描述

我有一个包含许多 SQL 查询的 SQL 文件,如下所示:

CREATE TABLE ..... ;
ALTER TABLE .... ;

我想在一次spark.sql调用中执行这些查询如何在 JAVA 中实现这一点?

谢谢

标签: javaapache-spark

解决方案


Spark 不支持通过一次调用执行多个查询spark.sql(请参阅此 SO 答案)。如果您不介意spark.sql多次调用,可以将.sql文件读入字符串,将其拆分为单独的查询,然后将其传递给spark.sql,如下所示:

import java.nio.file.*;

public static void main(String[] args) {
    String[] commands;

    try {
        Path sqlPath = FileSystems.getDefault().getPath("query.sql");
        String sql = new String(Files.readAllBytes(sqlPath));
        commands = sql.split(";", 0);
    } catch (Exception e) {
        System.out.println("failed to read SQL file");
        return;
    }

    for (int i = 0; i < commands.length; i++) {
        spark.sql(commands[i]);
    }
}

推荐阅读