#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();
Для получения более подробной информации, пожалуйста, обратитесь к документу.