Как передать файл схемы в виде макросов в приемник BigQuery при объединении данных

Я создаю конвейер слияния данных для загрузки данных CSV из GCS в BigQuery для моего случая использования, мне нужно создать макросы свойств и предоставить значение во время выполнения. Необходимо понять, как мы можем передать файл схемы в виде макросов в приемник BigQuery. Если я просто передаю путь к файлу схемы JSON в значения макросов, я получаю следующую ошибку.

java.lang.IllegalArgumentException: неверная схема: используйте JsonReader.setLenient (true) для принятия искаженного JSON в строке 1, столбец 1

2 ответа

В настоящее время нет способа использовать содержимое файла в качестве значения макроса, хотя существует jira, открытая для чего-то подобного ( https://issues.cask.co/browse/CDAP-15424). Ожидается, что содержимое схемы должно быть установлено в качестве значения макроса. Пользовательский интерфейс в настоящее время не очень хорошо обрабатывает эти типы значений макросов ( https://issues.cask.co/browse/CDAP-15423), поэтому я бы предложил установить его через конечную точку REST ( https://docs.cdap.io/cdap/6.0.0/en/reference-manual/http-restful-api/preferences.html), где имя приложения - это имя конвейера.

Кроме того, вы можете сделать свой конвейер немного более общим, написав плагин Action, который выглядит примерно так:

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

Плагин будет первым этапом в вашем конвейере и позволит последующим этапам в вашем конвейере использовать ${key} в качестве макроса, который будет заменен реальной схемой.

Если вы используетеBatchSink

Вы можете прочитать в

      @Override
  public void prepareRun(BatchSinkContext context) {

чем-то вроде:

       String token =
        Objects.requireNonNull(
            context.getArguments().get("token"),
            "Argument Setter has failed in initializing the \"token\" argument.");
    HTTPSinkConfig.setToken(token);
Другие вопросы по тегам