Ho lanciato un cluster Amazon EMR nella regione AWS Cina (Pechino) (cn-north-1). Ho usato Presto e Apache Hive per creare una tabella esterna a un bucket Amazon Simple Storage Service (Amazon S3). Quando eseguo una query della tabella utilizzando Hive e Presto, ricevo un errore simile al seguente: presto:default> select * from mydata; Query 20200912_072348_00009_qqx96, FAILED, 1 node Splits: 1 total, 0 done (0.00%) 0:03 [0 rows, 0B] [0 rows/s, 0B/s] Query 20200912_072348_00009_qqx96 failed: Il token fornito non è valido o non è valido in altro modo. (Service: Amazon S3; Status Code: 400; Error Code: InvalidToken; Request ID: 811359ED1D9F8250)
Breve descrizione
Nelle versioni precedenti di Amazon EMR, Presto non utilizza automaticamente la regione in cui si trova il bucket S3. Utilizza una delle seguenti opzioni per risolvere questo errore:
- Esegui l'upgrade alla versione 5.12.0 o successiva di Amazon EMR.
- Per utilizzare la versione 5.11.x o precedente di Amazon EMR, imposta la proprietà hive.s3.pin-client-to-current-region su true.
Risoluzione
Esegui l'upgrade alla versione 5.12.0 o successiva di Amazon EMR
Avvia un nuovo cluster e scegli la versione 5.12.0 o successiva di Amazon EMR. Per ulteriori informazioni, consulta Informazioni sulle versioni di Amazon EMR .
Imposta la proprietà hive.s3.pin-client-to-current-region su true (versione 5.11.x o precedente)
1. Su ogni nodo, apri il file hive.properties, quindi imposta la proprietà hive.s3.pin-client-to-current-region su true. Esempio:
sudo vim /etc/presto/conf/catalog/hive.properties
hive.s3.connect-timeout=2m
hive.s3.max-backoff-time=10m
...
hive.s3.pin-client-to-current-region=true
2. Riavvia Presto su ogni nodo:
sudo restart presto-server
3. Per verificare che la nuova configurazione funzioni come previsto, eseguire una query su una tabella utilizzando Hive e Presto nella regione della Cina (Pechino).
Informazioni correlate
Apache Hive
Presto e Trino