Невозможно подключиться к облаку SQL из преобразования потока данных облака - PullRequest
0 голосов
/ 14 мая 2019

Я не могу подключиться к облачному SQL изнутри пользовательского DoFn при работе в облачном потоке данных. Ошибки, которые отображаются в журнале:

  • Подключение к экземпляру Cloud SQL [] через сокет ssl.
  • [Docbuilder-работник-исключение]: com.zaxxer.hikari.pool.HikariPool $ PoolInitializationException: Ошибка инициализировать пул: не удалось создать соединение с сервером базы данных.

Тот же код и конфиг работают нормально при подключении к облаку SQL из дескриптора appenginer.

Я явно предоставил учетную запись службы вычислительного механизма - -compute@developer.gserviceaccount.com - клиент Cloud SQL, средство просмотра Cloud SQL и роли редактора.

Любая помощь в устранении неполадок, это очень ценится!

Ответы [ 2 ]

0 голосов
/ 22 мая 2019

Я также столкнулся с множеством проблем при попытке использовать пул соединений с облачным потоком данных для облачного SQL с пользовательским DoFn.Теперь я не помню, была ли моя ошибка такой же, как ваша, но я решил создать метод @Setup в классе DoFn следующим образом:

static class ProcessDatabaseEvent extends DoFn<String, String> {
@Setup
public void createConnectionPool() throws IOException {
  final Properties properties = new Properties();
  properties.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("config.properties"));
  final String JDBC_URL = properties.getProperty("jdbc.url");
  final String JDBC_USER = properties.getProperty("jdbc.username");
  final String JDBC_PASS = properties.getProperty("jdbc.password");

  final HikariConfig config = new HikariConfig();
  config.setMinimumIdle(5);
  config.setMaximumPoolSize(50);
  config.setConnectionTimeout(10000);
  config.setIdleTimeout(600000);
  config.setMaxLifetime(1800000);
  config.setJdbcUrl(JDBC_URL);
  config.setUsername(JDBC_USER);
  config.setPassword(JDBC_PASS);

  pool = new HikariDataSource(config);
}

@ProcessElement
public void processElement(final ProcessContext context) throws IOException, SQLException {
//Your DoFn code here...
}
0 голосов
/ 15 мая 2019

Для подключения к Cloud SQL из внешних приложений есть несколько методов, которые могут следовать в документе. Как подключиться к Cloud SQL из внешних приложений [1], вы можете найти альтернативы и шаги для достижения вашей цели.

[1] https://cloud.google.com/sql/docs/postgres/connect-external-app

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...