使用 Apache beam 的 ZetaSQL 示例
ZetaSQL Sample Using Apache beam
我在 Apache beam 框架 (2.17.0-SNAPSHOT) 中使用 ZetaSQL 时遇到问题。在浏览了 apache beam 的文档后,我找不到 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.access0(Unknown Source)
at java.util.ServiceLoader$LazyIterator.nextService(Unknown Source)
更新:截至 2020 年 6 月 23 日,MacOS 也支持 Beam ZetaSQL(不是所有版本,但至少是最新版本)!
====
我认为这与你的OS有关。 Beam 是一个统一的框架,但你的异常从它的依赖性来看:ZetaSQL 解析器。如果您更改为 linux 的较新版本,我认为您的代码片段应该可以工作。
我在 Apache beam 框架 (2.17.0-SNAPSHOT) 中使用 ZetaSQL 时遇到问题。在浏览了 apache beam 的文档后,我找不到 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.access0(Unknown Source)
at java.util.ServiceLoader$LazyIterator.nextService(Unknown Source)
更新:截至 2020 年 6 月 23 日,MacOS 也支持 Beam ZetaSQL(不是所有版本,但至少是最新版本)!
====
我认为这与你的OS有关。 Beam 是一个统一的框架,但你的异常从它的依赖性来看:ZetaSQL 解析器。如果您更改为 linux 的较新版本,我认为您的代码片段应该可以工作。