2 votes

GoolgeBigQuery - Dépassement des limites de débit

Lorsque nous essayons d'insérer des données dans GoogleBigQuery, nous obtenons l'erreur suivante :

table.write : Dépassement des limites de débit : trop d'opérations de mise à jour de la table pour cette table. Pour plus d'informations, voir https://cloud.google.com/bigquery/troubleshooting-errors (code d'erreur : rateLimitExceeded)

D'après la documentation, je peux dépasser l'un des cas suivants

Comment puis-je savoir quels critères sont dépassés par ma demande ?

J'ai déjà exploré d'autres solutions dans le web et aucune n'a fonctionné.

2voto

Christopher Points 765

Vous pouvez vérifier votre page Quotas (Menu de navigation -> IAM & Admin -> Quotas) puis, sous le service, vous pouvez sélectionner uniquement l'API BigQuery pour voir si vous atteignez un quota d'API BQ. Si ce n'est pas le cas, il est fort probable que vous atteigniez le quota de l'API BQ. "Limite de mise à jour quotidienne des tables de destination - 1 000 mises à jour par table et par jour".

1voto

Héctor Neri Points 935

Vous atteignez la limite de mise à jour de la table. Cela signifie que vous soumettez beaucoup de les opérations qui modifient le stockage de votre table (insertion, mise à jour ou suppression) . N'oubliez pas que cela inclut également les travaux de chargement, les DML ou les requêtes avec des tables de destination. Étant donné que le quota se reconstitue périodiquement, vous devrez attendre quelques minutes avant de réessayer, mais faites attention à votre quota de mise à jour des tables pour ne plus recevoir cette erreur.

Si vous insérez des lignes dans un grand nombre d'opérations plutôt que dans un petit nombre, envisagez d'utiliser la méthode suivante Inserts de diffusion à la place.

1voto

Felipe Hoffa Points 4628

Laissez-moi reproduire l'erreur avec un cas réel que j'ai reçu d'un coéquipier :

# create the table
CREATE TABLE temp.bucket_locations
AS 
SELECT 'ASIA-EAST1' bucket_location
UNION ALL SELECT 'ASIA-NORTHEAST2' bucket_location;

#update several times
UPDATE temp.bucket_locations
 SET bucket_location = "US"
 WHERE UPPER(bucket_location) LIKE "US%";
UPDATE temp.bucket_locations
 SET bucket_location = "TW"
 WHERE UPPER(bucket_location) LIKE "ASIA-EAST1%";
UPDATE temp.bucket_locations
 SET bucket_location = "JP"
 WHERE UPPER(bucket_location) LIKE "ASIA-NORTHEAST1%";
UPDATE temp.bucket_locations
 SET bucket_location = "HK"
 WHERE UPPER(bucket_location) LIKE "ASIA-EAST2%";
UPDATE temp.bucket_locations
 SET bucket_location = "JP"
 WHERE UPPER(bucket_location) LIKE "ASIA-NORTHEAST2%";
UPDATE temp.bucket_locations
 SET bucket_location = "KR"
 WHERE UPPER(bucket_location) LIKE "ASIA-NORTHEAST3%";
UPDATE temp.bucket_locations
 SET bucket_location = "IN"
 WHERE UPPER(bucket_location) LIKE "ASIA-SOUTH1%";
UPDATE temp.bucket_locations
 SET bucket_location = "SG"
 WHERE UPPER(bucket_location) LIKE "ASIA-SOUTHEAST1%";
UPDATE temp.bucket_locations
 SET bucket_location = "AU"
 WHERE UPPER(bucket_location) LIKE "AUSTRALIA%";
UPDATE temp.bucket_locations
 SET bucket_location = "FI"
 WHERE UPPER(bucket_location) LIKE "EUROPE-NORTH1%";
UPDATE temp.bucket_locations
 SET bucket_location = "BE"
 WHERE UPPER(bucket_location) LIKE "EUROPE-WEST1%";
UPDATE temp.bucket_locations
 SET bucket_location = "GB"
 WHERE UPPER(bucket_location) LIKE "EUROPE-WEST2%";
UPDATE temp.bucket_locations
 SET bucket_location = "DE"
 WHERE UPPER(bucket_location) LIKE "EUROPE-WEST3%";
UPDATE temp.bucket_locations
 SET bucket_location = "NL"
 WHERE UPPER(bucket_location) LIKE "EUROPE-WEST4%";
UPDATE temp.bucket_locations
 SET bucket_location = "CH"
 WHERE UPPER(bucket_location) LIKE "EUROPE-WEST6%";
UPDATE temp.bucket_locations
 SET bucket_location = "CA"
 WHERE UPPER(bucket_location) LIKE "NORTHAMERICA%";
UPDATE temp.bucket_locations
 SET bucket_location = "BR"
 WHERE UPPER(bucket_location) LIKE "SOUTHAMERICA%";

Dépassement des limites de débit : trop d'opérations de mise à jour de la table pour cette table

La solution dans ce cas est d'éviter de faire autant de mises à jour. Au lieu de cela, nous pouvons en faire une seule, en combinant tous les mappings ensemble :

CREATE TEMP TABLE `mappings`
AS 
SELECT *
FROM UNNEST(
  [STRUCT('US' AS abbr, 'US%' AS long), ('TW', 'ASIA-EAST1%'), ('JP', 'ASIA-NORTHEAST2%'
  # add mappings
)]);

UPDATE temp.bucket_locations
 SET bucket_location = abbr
 FROM mappings 
 WHERE UPPER(bucket_location) LIKE long

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X