【问题标题】:ZetaSQL Sample Using Apache beam使用 Apache Beam 的 ZetaSQL 示例
【发布时间】:2020-02-11 20:56:51
【问题描述】:

我在 Apache Beam 框架 (2.17.0-SNAPSHOT) 中使用 ZetaSQL 时遇到问题。在浏览了 apache 梁的文档后,我找不到 ZetaSQL 的任何示例。

我尝试添加 Planner: options.setPlannerName("org.apache.beam.sdk.extensions.sql.zetasql.ZetaSQLQueryPlanner");

但仍面临问题,请在下方添加片段以寻求帮助。

    ```
    String sql =
                    "SELECT CAST (1243 as INT64), "
                        + "CAST ('2018-09-15 12:59:59.000000+00' as TIMESTAMP), "
                        + "CAST ('string' as STRING);";

      ZetaSQLQueryPlanner zetaSQLQueryPlanner = new ZetaSQLQueryPlanner();
            BeamRelNode beamRelNode = zetaSQLQueryPlanner.convertToBeamRel(sql);
            PCollection<Row> stream = BeamSqlRelUtils.toPCollection(p, beamRelNode);
    p.run();

我知道我们需要以下代码段,但未能创建配置 Frameworks.newConfigBuilder()

在运行代码时我发现以下异常:

    Exception in thread "main" java.util.ServiceConfigurationError: com.google.zetasql.ClientChannelProvider: Provider com.google.zetasql.JniChannelProvider could not be instantiated
        at java.util.ServiceLoader.fail(Unknown Source)
        at java.util.ServiceLoader.access$100(Unknown Source)
        at java.util.ServiceLoader$LazyIterator.nextService(Unknown Source)

【问题讨论】:

  • 您好!你的操作系统是什么? ZetaSQL 不适用于 Mac 和非常旧版本的 Linux。
  • 嗨,@RuiWang 既然 Apache Beam 是统一框架,那没关系。我想在 Beam SQL 代码中使用 ZetaSQL Planner 而不是 Calcite。由于喜欢方解石,我们有一个类似的示例,是否有任何参考。用于 ZetaSQL 规划器。
  • 我正在评论您的特定异常,因为我怀疑它与您的操作系统有关。 Beam 是一个统一的框架,但您的异常来自它的依赖项:ZetaSQL 解析器。
  • 如果您更改为较新版本的 linux,我认为您的代码 sn-p 应该可以工作。
  • @BackBenChers,您介意让我们知道王瑞的建议是否对您有用吗?谢谢!

标签: java google-cloud-platform apache-beam beam-sql


【解决方案1】:

更新:截至 2020 年 6 月 23 日,Beam ZetaSQL 也支持 Mac OS(不是所有版本,但至少是最新版本)!

====

我认为这与您的操作系统有关。 Beam 是一个统一的框架,但您的异常来自它的依赖项:ZetaSQL 解析器。如果您更改为较新版本的 linux,我认为您的代码 sn-p 应该可以工作。

【讨论】:

  • 你好 Rui,Beam SQL 中是否提供 row_number() 函数?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-18
  • 2017-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多