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à.
Usa Avro SerDe per creare tabelle Athena dai dati Avro.
Nome della libreria di serializzazione
Il nome della libreria di serializzazione per SerDe Avro è. org.apache.hadoop.hive.serde2.avro.AvroSerDe
Per informazioni tecniche, consulta la documentazione AvroSerDe
Usa l'Avro SerDe
Per motivi di sicurezza, Athena non supporta l'utilizzo avro.schema.url
per specificare lo schema della tabella; utilizza avro.schema.literal
invece.
Per estrarre lo schema dai dati in formato Avro, utilizzate il avro-tools-
file Apache che si trova nella <version>
.jarjava
sottodirectory della versione Avro installata. Utilizzate il getschema
parametro per restituire uno schema che potete usare nella vostra WITH SERDEPROPERTIES
dichiarazione, come nell'esempio seguente.
java -jar avro-tools-1.8.2.jar getschema my_data.avro
Per scaricare Avro, consulta la pagina relativa alle release di Apache Avro
Dopo aver ottenuto lo schema, utilizza un'CREATE TABLE
istruzione per creare una tabella Athena basata sui dati Avro sottostanti archiviati in Amazon S3. Per specificare l'Avro SerDe nella tua CREATE TABLE
dichiarazione, usa. ROW FORMAT SERDE
'org.apache.hadoop.hive.serde2.avro.AvroSerDe'
Specificate lo schema utilizzando la WITH SERDEPROPERTIES
clausola, come nell'esempio seguente.
Nota
Replace (Sostituisci) myregion
accedi s3://athena-examples-
con l'identificatore della regione in cui esegui Athena, ad esempio. myregion
/path/to/data/s3://athena-examples-us-west-1/path/to/data/
CREATE EXTERNAL TABLE flights_avro_example (
yr INT,
flightdate STRING,
uniquecarrier STRING,
airlineid INT,
carrier STRING,
flightnum STRING,
origin STRING,
dest STRING,
depdelay INT,
carrierdelay INT,
weatherdelay INT
)
PARTITIONED BY (year STRING)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.avro.AvroSerDe'
WITH SERDEPROPERTIES ('avro.schema.literal'='
{
"type" : "record",
"name" : "flights_avro_subset",
"namespace" : "default",
"fields" : [ {
"name" : "yr",
"type" : [ "null", "int" ],
"default" : null
}, {
"name" : "flightdate",
"type" : [ "null", "string" ],
"default" : null
}, {
"name" : "uniquecarrier",
"type" : [ "null", "string" ],
"default" : null
}, {
"name" : "airlineid",
"type" : [ "null", "int" ],
"default" : null
}, {
"name" : "carrier",
"type" : [ "null", "string" ],
"default" : null
}, {
"name" : "flightnum",
"type" : [ "null", "string" ],
"default" : null
}, {
"name" : "origin",
"type" : [ "null", "string" ],
"default" : null
}, {
"name" : "dest",
"type" : [ "null", "string" ],
"default" : null
}, {
"name" : "depdelay",
"type" : [ "null", "int" ],
"default" : null
}, {
"name" : "carrierdelay",
"type" : [ "null", "int" ],
"default" : null
}, {
"name" : "weatherdelay",
"type" : [ "null", "int" ],
"default" : null
} ]
}
')
STORED AS AVRO
LOCATION 's3://athena-examples-myregion
/flight/avro/';
Esegui l'istruzione MSCK REPAIR TABLE
sulla tabella per aggiornare i metadati della partizione.
MSCK REPAIR TABLE flights_avro_example;
Esegui una query per trovare le prime 10 città in base al numero totale di partenze.
SELECT origin, count(*) AS total_departures
FROM flights_avro_example
WHERE year >= '2000'
GROUP BY origin
ORDER BY total_departures DESC
LIMIT 10;
Nota
I dati della tabella di volo provengono da Flights