对于我的用例,我正在创建一个数据融合管道来将csv数据从GCS加载到BigQuery,我需要创建一个属性宏并在运行时提供值。需要了解如何将架构文件作为宏传递给BigQuery接收器。 如果我只是将json模式文件路径传递给Macros值,则会收到以下错误。
java.lang.IllegalArgumentException:无效的架构:使用JsonReader.setLenient(true)在第1行第1列的第一行接受格式错误的JSON
答案 0 :(得分:1)
当前没有办法将文件的内容用作宏值,尽管已经为此类(https://issues.cask.co/browse/CDAP-15424)打开了jira。期望将模式内容设置为宏值。 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)进行设置,其中应用程序名称为管道名称。 / p>
或者,通过编写类似于以下内容的Action插件,可以使管道更通用:
@Override
public void run(ActionContext context) throws Exception {
String schema = readFileContents();
context.getArguments().setArgument(key, schema);
}
该插件将是您管道中的第一阶段,并将允许您管道中的后续阶段使用$ {key}作为将被实际架构替换的宏。