Impala/kovanda kullanmamız ve ayırmamız gereken bir JSON yapımız var. JSON yapısı geliştikçe Avro'yu kullanabileceğimizi düşündük.Impala/hive storage için gelişen avro şemasını kullanma
JSON'u ayrıştırmayı ve bunu avro olarak biçimlendirmeyi planladık.
Avro biçimlendirilmiş veriler doğrudan impala tarafından kullanılabilir. Biz HDF'ler dizinde /user/HDF'ler saklayın Diyelim/person_data/
Biz o klasördeki avro tefrika verileri koyarak tutacak ve biz birer giriş json bir ayrıştırma edilecektir. Biz oluşturarak kovanında tablo yaratacak Bunun için
{
"type": "record",
"namespace": "avro",
"name": "PersonInfo",
"fields": [
{ "name": "first", "type": "string" },
{ "name": "last", "type": "string" },
{ "name": "age", "type": "int" }
]
}
gibi: (//user/hdfs/avro/scheams/person.avsc HDF'ler)
biz kişi için avro şema dosyası var, Sağlar ki
{
"type": "record",
"namespace": "avro",
"name": "PersonInfo",
"fields": [
{ "name": "first", "type": "string" },
{ "name": "last", "type": "string" },
{ "name": "age", "type": "int" },
{ "name": "city", "type": "string" }
]
}
- için: - dış tablo
CREATE TABLE kst
ROW FORMAT SERDE
'org.apache.hadoop.hive.serde2.avro.AvroSerDe'
STORED AS INPUTFORMAT
'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat'
TBLPROPERTIES (
'avro.schema.url'='hdfs://user/hdfs/avro/scheams/person.avsc');
bu şemayı (//user/hdfs/avro/scheams/person.avsc HDF'ler) değiştirmeniz gerekir yarın Diyelim
Yeni seriliazed verileri aynı HDFS dizininde/kullanıcı/hdfs/person_data/dizininde tutmaya devam edebilir miyiz ve impala/hive, NULL değerli eski kayıtlar olarak şehir sütununu vererek çalışmaya devam edebilir mi?