Zastanawiam się, czy możliwe jest posiadanie opcjonalnej tablicy. Załóżmy schemat tak:opcjonalna tablica w schemacie avro
{
"type": "record",
"name": "test_avro",
"fields" : [
{"name": "test_field_1", "type": "long"},
{"name": "subrecord", "type": [{
"type": "record",
"name": "subrecord_type",
"fields":[{"name":"field_1", "type":"long"}]
},"null"]
},
{"name": "simple_array",
"type":{
"type": "array",
"items": "string"
}
}
]
}
Próbuje napisać Avro nagrywanie bez „simple_array” spowodowałoby NPE w datafilewriter. Dla subrecord to jest po prostu w porządku, ale gdy próbuję zdefiniować tablicę jako opcjonalne:
{"name": "simple_array",
"type":[{
"type": "array",
"items": "string"
}, "null"]
To nie spowodować NPE jednak wyjątek środowiska wykonawczego:
AvroRuntimeException: Not an array schema: [{"type":"array","items":"string"},"null"]
Dzięki.
Miałem ten sam problem z listami java, twoja odpowiedź rozwiązała mój problem. Dzięki! – forhas
Otrzymuję ten sam błąd. W mojej instalacji próbuję przetworzyć plik Avro za pomocą programu MapReduce Java. Praca została pomyślnie zakończona. Kolejnym etapem linii danych jest utworzenie tabeli ula (avroSerde) nad przekształconymi danymi. Tabela również zostanie utworzona pomyślnie, ale gdy spróbuję wysłać zapytanie do tabeli za pomocą hql, (która z kolei wykonała zadanie Mapreduce), zadanie nie powiedzie się z "Błąd: java.lang.RuntimeException: org.apache.hadoop.hive.ql.metadata.HiveException: Hive Runtime Error podczas przetwarzania zapisu" – venBigData