AzureDataLake-Gen2 с JavaSDK и прокси

#java #maven #proxy #azure-data-lake #azure-data-lake-gen2

#java #maven #прокси #azure-озеро данных #azure-data-lake-gen2

Вопрос:

У меня относительно простая цель:

Обновите программное обеспечение, получающее доступ к ADLS-Gen1 (используя пакет maven: https://github.com/Azure/azure-data-lake-store-java ), который довольно прост в использовании. Приложение использует участников службы для аутентификации и простой http-прокси.

Фрагмент pom.xml

 <dependencies>
  <dependency>
    <groupId>com.microsoft.azure</groupId>
    <artifactId>azure-data-lake-store-sdk</artifactId>
    <version>2.1.5</version>
  </dependency>
  ...
</dependencies>
 

Пример класса для доступа к ADLS-Gen1

 public class AdlsService {

  // ... Some initialisation for AUTH_TOKEN_ENDPOINT, CLIENT_KEY, CLIENT_ID and ACCOUNT_FQDN

  private ADLStoreClient buildClient() throws IOException {
    AccessTokenProvider accessTokenProvider = new ClientCredsTokenProvider(AUTH_TOKEN_ENDPOINT, CLIENT_ID, CLIENT_KEY);
    return ADLStoreClient.createClient(ACCOUNT_FQDN, accessTokenProvider);
  }

  public boolean checkExists(final String filePath) throws IOException {
    ADLStoreClient adlStoreClient = buildClient();
    return adlStoreClient.checkExists(filePath);
  }
}
 

Новая версия должна получить доступ к ADLS-Gen2 с использованием официально рекомендованного пакета Maven (https://github.com/Azure/azure-sdk-for-java/tree/master/sdk/storage/azure-storage-file-datalake ).

Фрагмент pom.xml

 <dependencies>
  <dependency>
    <groupId>com.azure</groupId>
    <artifactId>azure-storage-file-datalake</artifactId>
    <version>12.4.0</version>
  </dependency>
  ...
</dependencies>
 

Некоторые вещи работают не так гладко, как предполагалось изначально: многочисленные зависимости неявно требуются и нигде не документированы, конфигурация прокси не выполняет то, что должна, и, поскольку я новичок в Netty, мне сложно настроить все так, как я хочу.


Отсюда вопрос: если у меня есть простое приложение, которое считывает файлы из ADLS-Gen1 через HTTP-прокси. Какие необходимые шаги необходимо предпринять, чтобы заставить его работать с ADLS-GEN2, и какие мои варианты отладки помогут мне найти проблемы и неправильные настройки.

Документация для этого распространена и не содержит всего, что требуется. (Доказательством этого является то, что через 1-2 дня я все еще работаю над тем, чтобы соединение вообще работало)

Ответ №1:

Насколько я понимаю, у вас есть прокси-сервер HTTP. Вы хотите получить доступ к озеру данных Azure gen2 через прокси-сервер. Если это так, пожалуйста, обратитесь к следующему коду

 String accountName = "";
String accountKey = "";
StorageSharedKeyCredential credential = new StorageSharedKeyCredential(accountName, accountKey);
String endpoint = String.format(Locale.ROOT, "https://%s.dfs.core.windows.net", accountName);
ProxyOptions proxyOptions = new new ProxyOptions(ProxyOptions.Type.HTTP,
                    new InetSocketAddress("proxyURL", "proxyPort"))
                    .setCredentials("proxyUsername", "proxyPassword");
HttpClient httpClient = new NettyAsyncHttpClientBuilder()
            .proxy(proxyOptions).build();
DataLakeServiceClientBuilder builder = new DataLakeServiceClientBuilder();
DataLakeServiceClient dataLakeServiceClient = builder.credential(clientSecretCredential)
            .endpoint(endpoint).httpClient(httpClient).buildClient();
 

Для получения более подробной информации, пожалуйста, обратитесь к документу.