Удалите незаписанный файл из Azure Data Lake Gen 2 - PullRequest
1 голос
/ 13 февраля 2020

Чтобы сначала загрузить файл в ADL, вам необходимо:

  • сделать запрос на установку с параметрами ?resource=file (это создаст файл в ADL)
  • добавить данные к файлу с ?action=append&position=<N> параметрами
  • наконец, вам нужно грипп sh данные с ?action=flush&position=<FILE_SIZE>

Мой вопрос:

Есть ли способ сообщить серверу, как долго должны жить данные, если они не сброшены (записаны).

Поскольку для записи данных в него сначала необходимо создать файл, возможно, быть сценарием ios, где гриппа sh не происходит, и вы застряли с пустым файлом в озере данных.

Я не смог найти ничего в документации Microsoft о это.

Любая информация будет оценена.

1 Ответ

0 голосов
/ 14 февраля 2020

Обновлено 0219:

Если вы просто наберете append api, но не наберете flush api, то незафиксированные данные будут сохранены в azure в пределах 7 дней .

Неподтвержденные данные будут удалены автоматически через 7 дней и не могут быть удалены с вашего конца.


Origianl:

SDK для Azure Datalake Storage Gen2 готов, и вы можете использовать его для более удобной работы ADLS Gen2, чем с помощью rest api.

Если вы используете .NET / c#, есть SDK для Azure Datalake Storage Gen2: Azure .Storage.Files.DataLake .

Вот официальная версия c для использования этого SDK для работы ADLS Gen2, а приведенный ниже код c# используется для удаления файла / загрузки файла для ADLS Gen2:

        static void Main(string[] args)
        {
            string accountName = "xxx";
            string accountKey = "xxx";

            StorageSharedKeyCredential sharedKeyCredential =
        new StorageSharedKeyCredential(accountName, accountKey);

            string dfsUri = "https://" + accountName + ".dfs.core.windows.net";

            DataLakeServiceClient dataLakeServiceClient = new DataLakeServiceClient
                (new Uri(dfsUri), sharedKeyCredential);

            DataLakeFileSystemClient fileSystemClient = dataLakeServiceClient.GetFileSystemClient("w22");
            DataLakeDirectoryClient directoryClient = fileSystemClient.GetDirectoryClient("t2");

            // use this line of code to delete a file
            //directoryClient.DeleteFile("22.txt");


            //use the code below to upload a file
            //DataLakeFileClient fileClient = directoryClient.CreateFile("22.txt");
            //FileStream fileStream = File.OpenRead("d:\\foo2.txt");

            //long fileSize = fileStream.Length;
            //fileClient.Append(fileStream, offset: 0);
            //fileClient.Flush(position: fileSize);

            Console.WriteLine("**completed**");
            Console.ReadLine();
        }

Для Java см. Этот do c.

Для Python см. do c.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...