Maximind GeoIP2 в Java + Spark через реализацию HDFS - PullRequest
0 голосов
/ 11 апреля 2019

Привет всем, что я пытаюсь использовать Maximinds GeoIP2 города и страны поиска. Я провел часы и часы, работая с их документом на https://maxmind.github.io/GeoIP2-java/.

Как показывает их пример, у меня это класс:

  public class GeoTest implements SparkConx {

    public GeoTest() {
    }

    public CityResponse lookupCity() throws IOException, GeoIp2Exception {
        File database = new File("hdfs:///file/files/GeoLite2-Country.mmdb");

        DatabaseReader reader = new DatabaseReader.Builder(database).build();
        InetAddress ipAddress = InetAddress.getByName("128.101.101.101");

        CityResponse response = reader.city(ipAddress);
        Country country = response.getCountry();
        System.out.println(country.getIsoCode());            // 'US'
        System.out.println(country.getName());               // 'United States'
        System.out.println(country.getNames().get("zh-CN")); // '美国'

        Subdivision subdivision = response.getMostSpecificSubdivision();
        System.out.println(subdivision.getName());    // 'Minnesota'
        System.out.println(subdivision.getIsoCode()); // 'MN'

        City city = response.getCity();
        System.out.println(city.getName()); // 'Minneapolis'

        Postal postal = response.getPostal();
        System.out.println(postal.getCode()); // '55455'

        Location location = response.getLocation();
        System.out.println(location.getLatitude());  // 44.9733
        System.out.println(location.getLongitude()); // -93.2323
        return response;
    }

Этот класс вызывается из моего основного так:

`          GeoTest g = new GeoTest();
              case "0": try { g.lookupCity()
               System.out.println("I DID IT");
              } catch(Exception e){ System.out.println("Failed to read Geo DB");}
`

есть несколько вещей, которые можно запустить из этого приложения, и, следовательно, почему оператор case

Когда я запускаю 0 (lookupcity ()), я получаю такой вывод:

0 Не удалось прочитать базу данных Geo.

Он перехватывается при вызове метода в main.

Я пробовал другие варианты чтения, такие как SparkFiles.get () и до сих пор ничего.

Я действительно просто растерялся. Я думаю, что потенциально чтение из mmdb не удается, или это может быть что-то еще, что я пропускаю.

У меня это работает на Python, но я хочу, чтобы оно работало на Java.

Любые отзывы приветствуются, спасибо

...