Utilizzo di S3 Select con Hive per migliorare le prestazioni - Amazon EMR

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à.

Utilizzo di S3 Select con Hive per migliorare le prestazioni

Con la EMR versione 5.18.0 e successive di Amazon, puoi usare S3 Select con Hive su Amazon. EMR S3 Select consente alle applicazioni il recupero di un solo sottoinsieme di dati da un oggetto. Per AmazonEMR, il lavoro computazionale di filtraggio di set di dati di grandi dimensioni per l'elaborazione viene «trasferito» dal cluster ad Amazon S3, il che può migliorare le prestazioni di alcune applicazioni e ridurre la quantità di dati trasferiti tra Amazon e Amazon S3. EMR

S3 Select è supportato con tabelle Hive basate su JSON file CSV and e impostando la variabile di configurazione su durante la s3select.filter sessione Hive. true Per maggiori informazioni ed esempi, consulta Specifica di S3 Select nel codice.

S3 Select è adatto alla mia applicazione?

È consigliabile eseguire analisi comparative delle applicazioni con e senza S3 Select per vedere se l'utilizzo di tale caratteristica può risultare idoneo per l'applicazione.

Per determinare se l'applicazione è idonea per l'uso di S3 Select, utilizza le seguenti linee guida:

  • La query filtra più di metà del set di dati originale.

  • I predicati del filtro della query utilizzano colonne che dispongono di un tipo di dati supportato da Amazon S3 Select. Per ulteriori informazioni, consulta Tipi di dati nella Guida per l'utente di Amazon Simple Storage Service.

  • La tua connessione di rete tra Amazon S3 e il EMR cluster Amazon ha una buona velocità di trasferimento e larghezza di banda disponibile. Amazon S3 non comprime HTTP le risposte, quindi è probabile che la dimensione della risposta aumenti per i file di input compressi.

Considerazioni e limitazioni

  • La crittografia lato server di Amazon S3 con chiavi di crittografia fornite dal cliente (SSE-C) e la crittografia lato client non sono supportate.

  • La proprietà AllowQuotedRecordDelimiters non è supportata. Se questa proprietà è specificata, la query ha esito negativo.

  • Sono supportati solo i file CSV in formato -8. JSON UTF Multilinea CSVs e non JSON sono supportati.

  • Sono supportati solo i file non compressi, gzip o bzip2.

  • I caratteri di commento nell'ultima riga non sono supportati.

  • Le righe vuote alla fine di un file non vengono elaborate.

  • Hive on Amazon EMR supporta i tipi di dati primitivi supportati da S3 Select. Per ulteriori informazioni, consulta Tipi di dati nella Guida per l'utente di Amazon Simple Storage Service.

Specifica di S3 Select nel codice

Per utilizzare S3 Select nella tabella Hive, crea la tabella specificando com.amazonaws.emr.s3select.hive.S3SelectableTextInputFormat come nome della classe INPUTFORMAT e specifica un valore per la proprietà s3select.format utilizzando la clausola TBLPROPERTIES.

Per impostazione predefinita, S3 Select è disabilitato quando si eseguono query. Abilita S3 Select impostando s3select.filter su true nella sessione Hive, come indicato di seguito. Gli esempi seguenti mostrano come specificare S3 Select quando si crea una tabella da JSON file sottostanti CSV e quindi si esegue una query sulla tabella utilizzando una semplice istruzione select.

Esempio CREATETABLEdichiarazione per una tabella basata CSV
CREATE TABLE mys3selecttable ( col1 string, col2 int, col3 boolean ) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' STORED AS INPUTFORMAT 'com.amazonaws.emr.s3select.hive.S3SelectableTextInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' LOCATION 's3://path/to/mycsvfile/' TBLPROPERTIES ( "s3select.format" = "csv", "s3select.headerInfo" = "ignore" );
Esempio CREATETABLEdichiarazione per tabella JSON basata
CREATE TABLE mys3selecttable ( col1 string, col2 int, col3 boolean ) ROW FORMAT SERDE 'org.apache.hive.hcatalog.data.JsonSerDe' STORED AS INPUTFORMAT 'com.amazonaws.emr.s3select.hive.S3SelectableTextInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' LOCATION 's3://path/to/json/' TBLPROPERTIES ( "s3select.format" = "json" );
Esempio SELECTTABLEdichiarazione
SET s3select.filter=true; SELECT * FROM mys3selecttable WHERE col2 > 10;