Как загрузить и загрузить файл из моей локали в azure adls, используя java sdk? - PullRequest
0 голосов
/ 12 марта 2020
     String clientId ="***********";
     String authTokenEndpoint = "***";
     String clientKey = "****";
     AccessTokenProvider provider = new ClientCredsTokenProvider(authTokenEndpoint, clientId, 
           clientKey);
     String accountFQDN = "******";  // 
     ADLStoreClient client = ADLStoreClient.createClient(accountFQDN, provider);

1.Как использовать ADLStoreClient obj для загрузки файла? Есть ли что-нибудь вроде

s3.putObject(BucketName, FileName, new File(Srcfileloc))

в azure sdk.

2. Документация гласит, например, создание файла и запись в него. Что, если мои данные похожи на изображение или большой tar-файл!

3. Должен ли я следовать двум отдельным подходам для adls gen 1 и adls gen2. Можно ли повторно использовать один и тот же код?

1 Ответ

0 голосов
/ 13 марта 2020

Q1: Как загрузить файл в Azure озеро данных

Согласно моему тесту, мы можем загрузить файл с помещение до Azure озера данных со следующим кодом. Я использую 800 МБ файл tar.gz для теста

  1. SDK
 <dependency>
        <groupId>com.microsoft.azure</groupId>
        <artifactId>azure-data-lake-store-sdk</artifactId>
        <version>2.2.3</version>
      </dependency>
      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-nop</artifactId>
        <version>1.7.21</version>
      </dependency>
код
AccessTokenProvider provider = new ClientCredsTokenProvider(authTokenEndpoint, clientId, clientKey);
        ADLStoreClient client = ADLStoreClient.createClient(accountFQDN, provider);

        String filepath="D:\\download\\ideaIU-2019.3.3.tar.gz";
        Path path = Paths.get(filepath);

        String filename = "test/" +path.getFileName();

        try{
            FileInputStream in = new FileInputStream(filepath);
            ADLFileOutputStream out =client.createFile(filename,IfExists.OVERWRITE);
            int bufSize = 4 * 1000 * 1000;
            out.setBufferSize(bufSize);
            byte[] buffer = new byte[bufSize];
            int n;

            while ((n = in.read(buffer)) != -1) {
                out.write(buffer, 0, n);

            }
            out.close();
            in.close();
        }
        catch (Exception e){
           // process exception


        }

enter image description here

Для получения более подробной информации см. образец

Q2: Как загрузить файл в Azure озеро данных Gen2

Согласно моему тесту мы можем использовать следующий код

  1. SDk
<dependency>
      <groupId>com.azure</groupId>
      <artifactId>azure-storage-file-datalake</artifactId>
      <version>12.0.1</version>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-core</artifactId>
      <version>2.10.3</version>
    </dependency>
код
try {
          StorageSharedKeyCredential sharedKeyCredential =
                  new StorageSharedKeyCredential(accountName, accountKey);
          DataLakeServiceClientBuilder builder = new DataLakeServiceClientBuilder();
          builder.credential(sharedKeyCredential);
          builder.endpoint("https://" + accountName + ".dfs.core.windows.net");
          DataLakeServiceClient client = builder.buildClient();
          String fileSystem = "test";
          DataLakeFileSystemClient fileSystemClient = client.getFileSystemClient(fileSystem);
          DataLakeDirectoryClient directoryClient =fileSystemClient.getDirectoryClient("testFolder");
          String filepath="D:\\download\\ideaIU-2019.3.3.tar.gz";
          Path path = Paths.get(filepath);
          DataLakeFileClient fileClient = directoryClient.createFile(String.valueOf(path.getFileName()));
          fileClient.uploadFromFile(filepath, true);

      }catch(Exception ex){

          System.out.println(ex.getMessage());
      }

Более подробную информацию см. В документах и образцах

...