2

我正在创建一个数据融合管道以将 csv 数据从 GCS 加载到 BigQuery,以用于我需要创建属性宏并在运行时提供值的用例。需要了解我们如何将架构文件作为宏传递给 BigQuery 接收器。如果我只是将 json 模式文件路径传递给宏值,我会收到以下错误。

java.lang.IllegalArgumentException:无效架构:使用 JsonReader.setLenient(true) 在第 1 行第 1 列接受格式错误的 JSON

4

1 回答 1

3

目前没有办法将文件的内容用作宏值,尽管有一个类似这样的 jira 打开(https://issues.cask.co/browse/CDAP-15424)。预计架构内容应设置为宏值。UI 目前不能很好地处理这些类型的宏值(https://issues.cask.co/browse/CDAP-15423),所以我建议通过 REST 端点(https://docs.cdap .io/cdap/6.0.0/en/reference-manual/http-restful-api/preferences.html#H2290),其中应用程序名称是管道名称。

或者,您可以通过编写如下所示的 Action 插件来使您的管道更加通用:

@Override
public void run(ActionContext context) throws Exception {
  String schema = readFileContents();
  context.getArguments().setArgument(key, schema);
}

该插件将是您管道中的第一个阶段,并允许您的管道中的后续阶段使用 ${key} 作为将替换为实际架构的宏。

于 2019-05-23T18:16:14.777 回答