Как проверить, прошла ли модель Kmeans в Bigquery обучение с использованием клиентской библиотеки Bigquery Nodejs?

# #node.js #google-bigquery

Вопрос:

У меня есть приложение, которое позволяет людям использовать графический пользовательский интерфейс для создания моделей в Bigquery, поэтому я могу создать модель, вызвав мои API-интерфейсы nodejs, которые вызывают bigquery, модель требует некоторого обучения, как я могу запросить bigquery, чтобы проверить, прошла ли моя модель обучение с использованием моего nodejs bigqueryклиентская библиотека, чтобы я знал, что модель прошла обучение, и я могу начать доступ к центроидам?

Ответ №1:

Поскольку вы можете обучать модель, для обучения должна быть создана соответствующая jobID . Что вы можете сделать, это перечислить все задания и отфильтровать их по статусу, в этом случае проверьте запущенные.

Приведенный ниже код вернет запущенные задания:

 const {BigQuery} = require('@google-cloud/bigquery');
const bigquery = new BigQuery();

const jobArr = []

async function listJobs() {
  // Lists all jobs in current GCP project.

  // List the 5 most recent "running" jobs in reverse chronological order.
  // Omit the max_results parameter to list jobs from the past 6 months.
  // set allUsers to true to display jobs owned by all users in the project.
  const options = {
                   maxResults: 5, 
                   allUsers: true, 
                   stateFilter: 'running' //Acceptable values are "done", "pending", and "running"
                  };

  const [jobs] = await bigquery.getJobs(options);

  console.log('Jobs:');
  jobs.forEach(job => {
          console.log(job.id)
  });
}
 

Дополнительную информацию о том, как использовать этот метод, см. в getJobs().

В целях тестирования я запустил одно задание, и оно вернуло текущее выполняемое задание. Теперь вы можете использовать этот идентификатор задания и сохранить его где-нибудь, чтобы отслеживать, завершено задание или нет, получая сведения о его задании.

 Jobs:
bquxjob_12345_1234456
 

Вы можете дополнительно проверить детали этого задания, используя bigquery.job() для получения таких сведений, как адрес электронной почты, на котором выполнялось задание, статика (время создания, время запуска и т. Д.) И т. Д. Вы можете дополнительно проверить в Job REST reference информацию, которую вы можете извлечь из этого.

Получите адрес электронной почты, на котором выполнялось задание:

 const {BigQuery} = require('@google-cloud/bigquery');
const bigquery = new BigQuery();

const jobArr = []

async function listJobs() {
  // Lists all jobs in current GCP project.

  // List the 5 most recent "running" jobs in reverse chronological order.
  // Omit the max_results parameter to list jobs from the past 6 months.
  // set allUsers to true to display jobs owned by all users in the project.
  const options = {
                   maxResults: 5, 
                   allUsers: true, 
                   stateFilter: 'running' //Acceptable values are "done", "pending", and "running"
                  };
  const [jobs] = await bigquery.getJobs(options);

  console.log('Jobs:');
  jobs.forEach(job => {
          jobArr.push(job.id) // pushed the jobID in a list to pass to getjob()
          console.log(job.id)
  });
  getJob(jobArr)
}

async function getJob(jobArr) {
  // Get job properties.
        for (const element of jobArr) {
                const job = bigquery.job(element);
                const [jobResult] = await job.get();
                console.log("Email:")
                console.log(jobResult.metadata.user_email);
                // uncomment this part to show start and end time
                //console.log("Start Time (UNIX epoch):")
                //console.log(jobResult.metadata.statistics.startTime);
                //console.log("End Time (UNIX epoch):")
                //console.log(jobResult.metadata.statistics.endTime);
        }

}

listJobs()
 

Дополнительную информацию о том, как использовать этот метод, см. в job().

Вывод:

 Jobs:
bquxjob_12345_1234456
Email:
test_email@test.com