Чтение файла из API базы данных Azure DBFS REST 2.0 - PullRequest
0 голосов
/ 22 января 2019

Я работаю над приложением для чтения и записи файлов, используя API-интерфейс DBFS API 2.0 для Azure.Справочная документация для этого API: https://docs.azuredatabricks.net/api/latest/dbfs.html#read

Я могу загрузить файл (скажем, файл размером 1,4 МБ), преобразовав его в base64, а затем разделив на 1 МБ фрагментов данных.

По мере чтениядлина ограничена 1 МБ, я повторяю цикл для чтения данных со смещением 0 до 1000000 и 1000001 до end of the file.Теперь первая итерация данных, 0 - 1000000, действительна, и я могу подтвердить исходный файл, который я использовал для загрузки.

Но на второй и последующих итерациях данных данные base64 полностьюотличается и отсутствует в исходном файле base64.

Ниже приведен мой тестовый код: Second iteration - 0,4 МБ

const axios = require('axios')
const fs = require('fs')

axios({
  method: 'get',
  url: 'https://********.azuredatabricks.net/api/2.0/dbfs/read',
  data: {
    path: '/Test/backlit-beach-clouds-1684881.jpg',
    offset: 0,
    length: 1000000
  },
  headers: {
    'Authorization': `Bearer ****`
  }
}).then(({data}) => {
  if (data) {
    console.log('Success', data.bytes_read)
    fs.writeFile('./one.txt', data.data, function (err) {
      console.log('done', err)
    })
  } else {
    console.log('failed')
  }
})

First iteration - 1 МБ

const axios = require('axios')
const fs = require('fs')

axios({
  method: 'get',
  url: 'https://********.azuredatabricks.net/api/2.0/dbfs/read',
  data: {
    path: '/Test/backlit-beach-clouds-1684881.jpg',
    offset: 1000001,
    length: 1000000
  },
  headers: {
    'Authorization': `Bearer ****`
  }
}).then(({data}) => {
  if (data) {
    console.log('Success', data.bytes_read)
    fs.writeFile('./two.txt', data.data, function (err) {
      console.log('done', err)
    })
  } else {
    console.log('failed')
  }
})

Здесь *** заменены соответствующими доменами и токенами.

Как видите, приведенные выше примеры тестового кода будут генерировать one.txt и two.txt.Используя cat one.txt two.txt > final.txt, я могу получить final.txt, который я буду использовать для декодирования исходного файла.

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

Я придерживаюсь этого уже более 1 недели.Я имею в виду другие примеры кода, написанные для python, но без помощи.

Я не пытаюсь тратить впустую время.Но, пожалуйста, кто-нибудь поможет мне выяснить, что пошло не так или какая-либо другая стандартная процедура, которой я могу следовать?

...