我正在尝试使用用ZetaSQL解析的SQL转换运行Beam管道。我从设置选项开始

options.setPlannerName("org.apache.beam.sdk.extensions.sql.zetasql.ZetaSQLQueryPlanner");

当我尝试使用任何给定查询创建SqlTransform时,我得到

java.util.ServiceConfigurationError: org.apache.beam.repackaged.sql.com.google.zetasql.ClientChannelProvider: Provider org.apache.beam.repackaged.sql.com.google.zetasql.JniChannelProvider could not be instantiated
    at java.util.ServiceLoader.fail (ServiceLoader.java:232)
    at java.util.ServiceLoader.access$100 (ServiceLoader.java:185)
    at java.util.ServiceLoader$LazyIterator.nextService (ServiceLoader.java:384)
    at java.util.ServiceLoader$LazyIterator.next (ServiceLoader.java:404)
    at java.util.ServiceLoader$1.next (ServiceLoader.java:480)
    at org.apache.beam.repackaged.sql.com.google.zetasql.ClientChannelProvider.loadChannel (ClientChannelProvider.java:31)
...
    at org.apache.beam.sdk.extensions.sql.SqlTransform.expand (SqlTransform.java:82)
    at org.apache.beam.sdk.Pipeline.applyInternal (Pipeline.java:539)
    at org.apache.beam.sdk.Pipeline.applyTransform (Pipeline.java:473)
    at org.apache.beam.sdk.values.PCollection.apply (PCollection.java:357)
...



我在maven的POM中添加了以下相关依赖项:

        <dependency>
            <groupId>org.apache.beam</groupId>
            <artifactId>beam-runners-google-cloud-dataflow-java</artifactId>
            <version>2.15.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.beam</groupId>
            <artifactId>beam-sdks-java-extensions-sql</artifactId>
            <version>2.16.0</version>
        </dependency>


我还有其他想念的地方吗?

最佳答案

不幸的是,ZetaSQL规划器今天无法在MAC或旧版本的Linux上运行。请在以下位置查看Rui的评论:

ZetaSQL Sample Using Apache beam

看起来这个PR在这里可能有用(我没有深入研究这个来确认):

https://github.com/google/zetasql/pull/3

作为一种解决方法,您可以尝试使用较新版本的linux吗?也许在容器里?

10-06 06:03