

 Amazon Redshift non supporterà più la creazione di nuovi Python UDFs a partire dalla Patch 198. Python esistente UDFs continuerà a funzionare fino al 30 giugno 2026. Per ulteriori informazioni, consulta il [post del blog](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Risoluzione dei problemi relativi alle query in Amazon Redshift Spectrum
<a name="c-spectrum-troubleshooting"></a>



Questo argomento è un riferimento per i problemi comuni che puoi incontrare con le query di Amazon Redshift Spectrum. 

Per visualizzare gli errori generati dalle query di Redshift Spectrum, eseguire una query sulla tabella di sistema [SVL\$1S3LOG](r_SVL_S3LOG.md).

**Topics**
+ [Superamento del numero di nuovi tentativi](#spectrum-troubleshooting-retries-exceeded)
+ [Accesso limitato](#spectrum-troubleshooting-access-throttled)
+ [Superamento del limite di risorse](#spectrum-troubleshooting-resource-limit-exceeded)
+ [Nessuna riga restituita per una tabella partizionata](#spectrum-troubleshooting-no-rows-partitioned-table)
+ [Errore non autorizzato](#spectrum-troubleshooting-not-authorized-error)
+ [Formati di dati non compatibili](#spectrum-troubleshooting-incompatible-data-format)
+ [Errore di sintassi durante l'utilizzo della DDL Hive in Amazon Redshift](#spectrum-troubleshooting-syntax-error-using-hive-ddl)
+ [Autorizzazione per creare tabelle temporanee](#spectrum-troubleshooting-permission-to-create-temp-tables)
+ [Intervallo non valido](#spectrum-troubleshooting-invalid-range)
+ [Numero versione di Parquet non valido](#spectrum-troubleshooting-invalid-parquet-version)
+ [Campo obbligatorio mancante nelle informazioni sulla partizione esterna](#spectrum-troubleshooting-required-field-missing)

## Superamento del numero di nuovi tentativi
<a name="spectrum-troubleshooting-retries-exceeded"></a>

In caso di timeout di una richiesta di Amazon Redshift Spectrum, la richiesta viene annullata e inoltrata di nuovo. Dopo cinque tentativi non riusciti, la query non riesce con il seguente errore.

```
error:  Spectrum Scan Error: Retries exceeded
```

Le cause possibili sono: 
+ File di grandi dimensioni (superiori a 1 GB). Verificare la dimensione dei file in Amazon S3 e cercare file di dimensioni voluminose e disuguali. Dividi i file di grandi dimensioni in file più piccoli, di dimensione tra 100 MB e 1 GB. Fai in modo che i file siano della stessa dimensione. 
+ Throughput di rete lento. Riesegui la query in seguito. 

## Accesso limitato
<a name="spectrum-troubleshooting-access-throttled"></a>

Amazon Redshift Spectrum è soggetto alle quote di servizio di AWS altri servizi. In caso di utilizzo elevato, le richieste Redshift Spectrum potrebbero rallentare, causando il seguente errore.

```
error:  Spectrum Scan Error: Access throttled
```

Possono verificarsi due tipi di limitazione:
+ Accesso limitato da Amazon S3
+ Accesso limitato da. AWS KMS

Il contesto di errore fornisce ulteriori dettagli sul tipo di limitazione. Di seguito, puoi trovare le cause e le possibili risoluzioni per questa limitazione.

### Accesso limitato da Amazon S3
<a name="spectrum-troubleshooting-access-throttled-s3"></a>

Amazon S3 potrebbe limitare una richiesta Redshift Spectrum se la frequenza di richieste di lettura su un [prefisso](https://docs.aws.amazon.com/glossary/latest/reference/glos-chap.html#keyprefix) è troppo alta. Per informazioni sulla frequenza di GET/HEAD richiesta che puoi raggiungere in Amazon S3, consulta la Guida per l'utente dell'[ottimizzazione delle prestazioni di Amazon S3 nella guida per l'utente di Amazon](https://docs.aws.amazon.com/AmazonS3/latest/userguide/optimizing-performance.html) *Simple Storage* Service. La frequenza di GET/HEAD richieste di Amazon S3 tiene conto di tutte le GET/HEAD richieste su un prefisso, quindi diverse applicazioni che accedono allo stesso prefisso condividono la frequenza totale delle richieste.

Se le tue richieste Redshift Spectrum vengono spesso limitate da Amazon S3, riduci il numero di GET/HEAD richieste Amazon S3 che Redshift Spectrum invia ad Amazon S3. A tale scopo, prova a unire file di piccole dimensioni in file più grandi. Ti consigliamo di utilizzare dimensioni pari a 64 MB o superiori.

Considerare inoltre la possibilità di partizionare le tabelle Redshift Spectrum per beneficiare del filtraggio anticipato e ridurre il numero di file a cui si accede in Amazon S3. Per ulteriori informazioni, consulta [Partizionamento delle tabelle esterne di Redshift Spectrum](c-spectrum-external-tables.md#c-spectrum-external-tables-partitioning). 

### Accesso limitato da AWS KMS
<a name="spectrum-troubleshooting-access-throttled-kms"></a>

Se memorizzi i dati in Amazon S3 utilizzando la crittografia lato server (SSE-S3 o SSE-KMS), Amazon S3 richiama un'operazione API per ogni file a cui accede Redshift Spectrum. AWS KMS Queste richieste vengono conteggiate per la quota delle operazioni di crittografia; per ulteriori informazioni, consultare [Quote di richiesta AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/requests-per-second.html). Per ulteriori informazioni su SSE-S3 e SSE-KMS, consultare [Protezione dei dati tramite crittografia lato server](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingServerSideEncryption.html) e [Protezione dei dati tramite crittografia lato server con Chiavi KMS archiviate in AWS KMS](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html) nella *Guida per l'utente di Amazon Simple Storage Service*.

Un primo passo per ridurre il numero di richieste inviate da Redshift Spectrum AWS KMS consiste nel ridurre il numero di file a cui si accede. A tale scopo, prova a unire file di piccole dimensioni in file più grandi. Ti consigliamo di utilizzare dimensioni pari a 64 MB o superiori.

Se le tue richieste Redshift Spectrum vengono spesso limitate AWS KMS, prendi in considerazione la possibilità di richiedere un aumento della quota per la frequenza di AWS KMS richieste per le operazioni crittografiche. Per richiedere un aumento della quota, consulta [Limiti del servizio AWS](https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html) in *Riferimenti generali di Amazon Web Services*. 

## Superamento del limite di risorse
<a name="spectrum-troubleshooting-resource-limit-exceeded"></a>

Redshift Spectrum applica un limite superiore sulla quantità di memoria che una richiesta può utilizzare. Una richiesta Redshift Spectrum che richiede più memoria non riesce, causando il seguente errore.

```
error:  Spectrum Scan Error: Resource limit exceeded
```

Esistono due motivi comuni che possono causare il superamento dei limiti di memoria di una richiesta Redshift Spectrum:
+ Redshift Spectrum elabora una grande porzione di dati che non possono essere suddivisi in blocchi più piccoli.
+ Un passaggio di aggregazione di grandi dimensioni viene elaborato da Redshift Spectrum.

Ti consigliamo di utilizzare un formato di file che supporti le letture parallele con dimensioni di divisione pari o inferiori a 128 MB. consultare [File di dati per le query in Amazon Redshift Spectrum](c-spectrum-data-files.md) per i formati di file supportati e le linee guida generiche per la creazione di file di dati. Quando utilizzi formati di file o algoritmi di compressione che non supportano le letture parallele, ti consigliamo di mantenere le dimensioni dei file tra 64 MB e 128 MB.

## Nessuna riga restituita per una tabella partizionata
<a name="spectrum-troubleshooting-no-rows-partitioned-table"></a>

Se la query restituisce zero righe da una tabella esterna partizionata, verifica se una partizione è stata aggiunta per questa tabella esterna. Redshift Spectrum esegue la scansione dei file in una posizione Amazon S3 che è stata esplicitamente aggiunta utilizzando `ALTER TABLE … ADD PARTITION`. Esegui la query sulla vista [SVV\$1EXTERNAL\$1PARTITIONS](r_SVV_EXTERNAL_PARTITIONS.md) per trovare le partizioni esistenti. Esegui `ALTER TABLE … ADD PARTITION` per ogni partizione mancante. 

## Errore non autorizzato
<a name="spectrum-troubleshooting-not-authorized-error"></a>

Verificare che il ruolo IAM per il cluster consenta l'accesso agli oggetti dei file Amazon S3. Se il database esterno si trova in Amazon Athena, verificare che il ruolo IAM consenta l'accesso alle risorse Athena. Per ulteriori informazioni, consultare [Policy IAM per Amazon Redshift Spectrum](c-spectrum-iam-policies.md).

## Formati di dati non compatibili
<a name="spectrum-troubleshooting-incompatible-data-format"></a>

Per un formato di file a colonne, come Apache Parquet, il tipo di colonna è incorporato ai dati. Il tipo di colonna nella definizione CREATE EXTERNAL TABLE deve corrispondere al tipo di colonna del file di dati. In caso di mancata corrispondenza, viene visualizzato un messaggio di errore simile al seguente:

```
File 'https://s3bucket/location/file has an incompatible Parquet schema
for column ‘s3://s3bucket/location.col1'. Column type: VARCHAR, Par
```

Il messaggio potrebbe essere troncato a causa del limite della lunghezza del messaggio. Per recuperare il messaggio completo, incluso il nome e il tipo di colonna, eseguire una query sulla vista di sistema [SVL\$1S3LOG](r_SVL_S3LOG.md).

Le seguenti query di esempio SVL\$1S3LOG per l'ultima query completata.

```
select message 
from svl_s3log 
where query = pg_last_query_id() 
order by query,segment,slice;
```

Quanto segue è un esempio di risultato che mostra un messaggio di errore completo.

```
                            message
–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––-
Spectrum Scan Error. File 'https://s3bucket/location/file has an incompatible
Parquet schema for column ' s3bucket/location.col1'. 
Column type: VARCHAR, Parquet schema:\noptional int64 l_orderkey [i:0 d:1 r:0]\n
```

Per correggere l'errore, modifica la tabella esterna affinché corrisponda al tipo di colonna del file Parquet. 

## Errore di sintassi durante l'utilizzo della DDL Hive in Amazon Redshift
<a name="spectrum-troubleshooting-syntax-error-using-hive-ddl"></a>

Per CREATE EXTERNAL TABLE, Amazon Redshift supporta un linguaggio DDL che è simile al linguaggio DDL Hive. Tuttavia, i due tipi di DDL non sono sempre esattamente gli stessi. Se si copia il DDL Hive per creare o modificare le tabelle esterne Amazon Redshift, è possibile che si verifichino errori di sintassi. Di seguito sono riportati alcuni esempi di differenze tra Amazon Redshift e la DDL Hive: 
+ Amazon Redshift richiede l'utilizzo di virgolette singole (') mentre la DDL Hive supporta le virgolette doppie (").
+ Amazon Redshift non supporta il tipo di dati STRING. Utilizza invece VARCHAR.

## Autorizzazione per creare tabelle temporanee
<a name="spectrum-troubleshooting-permission-to-create-temp-tables"></a>

Per eseguire le query di Redshift Spectrum, l'utente del database deve disporre dell'autorizzazione per creare tabelle temporanee nel database. L'esempio seguente concede l'autorizzazione temporanea per il database `spectrumdb` al gruppo di utenti `spectrumusers`. 

```
grant temp on database spectrumdb  to group spectrumusers;
```

Per ulteriori informazioni, consulta [GRANT](r_GRANT.md).

## Intervallo non valido
<a name="spectrum-troubleshooting-invalid-range"></a>

Redshift Spectrum prevede che i file in Amazon S3 appartenenti a una tabella esterna non vengano sovrascritti durante una query. In tal caso, può restituire il seguente errore.

```
Error: HTTP response error code: 416 Message: InvalidRange The requested range is not satisfiable
```

Per evitare l'errore, assicurati che i file Amazon S3 non vengano sovrascritti mentre sono soggetti a query con Redshift Spectrum.

## Numero versione di Parquet non valido
<a name="spectrum-troubleshooting-invalid-parquet-version"></a>

Redshift Spectrum controlla i metadati di ogni file Apache Parquet a cui accede. Se il controllo ha esito negativo, può essere visualizzato un errore simile al seguente:

```
File 'https://s3.region.amazonaws.com/s3bucket/location/file has an invalid version number
```

L'esito negativo del controllo può essere causato da due motivi comuni:
+ Il file Parquet è stato sovrascritto durante la query (consulta [Intervallo non valido](#spectrum-troubleshooting-invalid-range)).
+ Il file Parquet è danneggiato.

## Campo obbligatorio mancante nelle informazioni sulla partizione esterna
<a name="spectrum-troubleshooting-required-field-missing"></a>

Quando tenti di aggiungere una partizione a una tabella esterna in un catalogo esterno, potrebbe venire restituito il seguente errore:

```
Error: The required field (<field_name>) is missing from the external partition information. Add missing field in partition and retry. Partition location: <partition_path>
```

Questo errore indica che una delle partizioni della tabella esterna utilizzata nella query presenta informazioni sui metadati della partizione mancanti. Questo succede nei casi seguenti:
+  È stata aggiunta una partizione a una tabella esterna in un catalogo esterno, ad esempio la, con informazioni parziali. AWS Glue Data Catalog
+  Hai eseguito query su una tabella partizionata in Amazon Redshift mentre aggiungevi o aggiornavi le partizioni per la tabella corrispondente in un catalogo esterno, come il AWS Glue Data Catalog. 

Di seguito sono riportati i campi che devi compilare quando recuperi una partizione dal AWS Glue Data Catalog:
+  StorageDescriptor 
  +  InputFormat 
  +  OutputFormat 
  +  SerDeInfo 
+  Valori 

Puoi eseguire query su [SVV\$1EXTERNAL\$1PARTITIONS](r_SVV_EXTERNAL_PARTITIONS.md) per trovare le partizioni esistenti e visualizzare i dettagli sui relativi campi.

Per un elenco completo dei campi di AWS Glue Data Catalog partizione, consulta [Partition](https://docs.aws.amazon.com/glue/latest/webapi/API_Partition.html) in the *AWS Glue Web* API Reference.