Я хочу создать большой файл (> 200 ГБ) и сохранить его в магазине min.io. Я развертываю свои попытки в веб-приложении на капсуле Kubernetes.
Одна попытка была с модифицированным измененным потоком и библиотекой CSV-WRITER с использованием метода PutObject. Что -то нравится это: < /p>
Я хочу создать большой файл (> 200 ГБ) и сохранить его в магазине min.io. Я развертываю свои попытки в веб-приложении на капсуле Kubernetes. Одна попытка была с модифицированным измененным потоком и библиотекой CSV-WRITER с использованием метода PutObject. Что -то нравится это: < /p> [code]const { faker } = require('@faker-js/faker'); const { createObjectCsvStringifier: createCsvStringifier } = require('csv-writer'); const Minio = require('minio'); const { Readable } = require('stream'); const minioClient = new Minio.Client({...});
< /code> Это обрабатывает файлы менее 1 ГБ без проблем, это займет менее 5 минут. Для создания и загрузки, но когда я прошу файл 2 ГБ или больше моего стручка, просто останавливаюсь, я думаю, я просто получаю статус Oomkilld на своем стручке, и поэтому я не получаю никаких ошибок на журналах.const csvWriter = createCsvWriter({ path: 'StellarDB.csv', header: [ { id: 'userId', title: 'userId' }, { id: 'username', title: 'username' }, { id: 'lastName', title: 'lastName' }, { id: 'email', title: 'Email' }, { id: 'column', title: 'column' }, { id: 'float', title: 'float' }, { id: 'jobArea', title: 'jobArea' }, { id: 'jobTitle', title: 'jobTitle' }, { id: 'phone', title: 'phone' }, { id: 'alpha', title: 'alpha' } ] }); const writeLargeCsvFile = async (NUM_ROWS) => { let batchSize = 500; let batch = [];
for (let i = 0; i < NUM_ROWS; i++) { batch.push(generateRandomRow());
if (batch.length === batchSize || i === NUM_ROWS - 1) { await csvWriter.writeRecords(batch); batch = []; } } };
< /code> После дальнейших исследований я заметил, что, вероятно, проблема была в библиотеке, которую я использовал для CSV, поэтому я перешел на Fast-CSV, и моя последняя попытка была примерно так: < /p> const { format } = require('fast-csv'); async function generateAndUploadCSV(name, NUM_ROWS, bucketName) { const pass = new PassThrough();
function write() { let ok = true; while (i < NUM_ROWS && ok) { i++; const record = { userId: i, username: faker.person.firstName(), lastName: faker.person.lastName(), email: faker.internet.email(), column: faker.database.column(), float: faker.number.float(3), jobArea: faker.person.jobArea(), jobTitle: faker.person.jobTitle(), phone: faker.phone.imei(), alpha: faker.string.alpha({ length: { min: 5, max: 10 } }), }; ok = csvStream.write(record); if (i < NUM_ROWS) { csvStream.once('drain', () => setImmediate(write)); } else { csvStream.end(); } } csvStream.on('error', err => { pass.destroy(err); }); write(); const objInfo = await uploadPromise; } < /code> Я также назначаю больше ресурсов на моем капсуле (память 8 ГБ и 4 ядра). Но все они ведут себя одинаково, только один файл 1 ГБ и не более. Вернуться, когда я собираюсь использовать его. Это может быть полезно для файлов CSV, но что, если я захочу использовать файлы JSON. Все они работают на капсулах Kubernetes. Просто добавляя больше информации. Мой сервисный стручок обрабатывается Knatie с файлом YML, аналогичным этим: < /p> apiVersion: serving.knative.dev/v1 kind: Service metadata: name: transformTesting spec: template: spec: containers: - image: .../...:transform-testing-SNAPSHOT env: - name: FORCE_NEW_REVISION value: "true" [/code] Желаю, чтобы кто -то мог указать мне на решение или концепцию, которую я игнорирую.
Как часть теста, мне дали, я должен кодировать приведенные ниже инструкции:
функция f ( x ) определяется над целыми числами x > = 0 as:
f (x) = ∑ (суммирование ∑ перекрывает i),
с i удовлетворяет следующие два ограничения:
. 0
b. = x - i...
Как часть теста, мне дали, я должен кодировать приведенные ниже инструкции:
функция f ( x ) определяется над целыми числами x > = 0 as:
f (x) = ∑ (суммирование ∑ перекрывает i),
с i удовлетворяет следующие два ограничения:
. 0
b. = x - i...
Один из наших искровых контейнеров использует jar под названием «kubernetes-client-4.12.0.jar». Доступен ли документ, в котором упоминается поддержка соответствующей версии Kubernetes. В настоящее время у нас есть Kubernetes версии 1.29, и нам нужно...
Я использую kubernetes-client/java API и хочу программно получить статус всех модулей во всех пространствах имен. Мой код основан на этом примере Java-библиотеки Kubernetes.