У меня есть много файлов avro с IP-адресами (веб-блоги), хранящимися в больших двоичных объектах Azure. Я хотел бы сопоставить IP с местоположением. Как это сделать с помощью Azure Data Lake Analytics (ADLA)?
Прямо сейчас у меня есть искровое задание, которое использует базу данных Maxmind IP с java-библиотекой, которая считывает большой файл .mmdb размером 113 МБ со всеми данными об IP-местоположении для выполнения этого поиска. Сейчас я изучаю, возможно ли передать эту работу в ADLA.
Maxmind также предоставляет библиотеку C#, так что с этой частью проблем не возникнет. Однако для меня не очевидно, как обращаться с этим большим файлом mmdb, который нужно прочитать, а затем использовать для поиска. Очевидно, было бы не так быстро читать файл для каждого поиска IP. Как это (и подобные случаи) может быть обработано с помощью ADLA, или ADLA не подходит для таких операций?
Если бы у меня была запущена обычная программа, я бы сделал поиск следующим образом:
using (var reader = new Reader("GeoIP2-City.mmdb"))
{
foreach(var ip in ips)
{
var data = reader.Find<Dictionary<string, object>>(ip);
...
}
}
База данных maxmind доступна здесь: https://dev.maxmind.com/geoip/geoip2/downloadable/ (обратите внимание, что я купил базу данных, которую сейчас использую) и библиотеку c#, чтобы прочитать ее здесь: https://github.com/maxmind/MaxMind-DB-Reader-dotnet