我正在创建一个数据融合管道,以将 csv 数据从 GCS 加载到 BigQuery,对于我的用例,我需要创建属性宏并在运行时提供值。需要了解如何将架构文件作为宏传递到 BigQuery 接收器。 如果我只是将 json 架构文件路径传递给宏值,我会收到以下错误。
java.lang.IllegalArgumentException:无效架构:使用 JsonReader.setLenient(true) 接受第 1 行第 1 列格式错误的 JSON
最佳答案
目前无法将文件的内容用作宏值,尽管有一个 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} 作为将替换为实际架构的宏。
关于google-cloud-data-fusion - 如何在数据融合中将架构文件作为宏传递到 BigQuery 接收器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56272403/