0
Я пытаюсь загрузить Avro файл из Google staorage в Google большой запрос с использованием nodejsApache Avro библиотека не удалось разобрать файл nodejs
var gcloud = require('gcloud')({
keyFilename: '../config/keyfile.json',
projectId: 'my-project-id'
});
var request = require('request');
var bigquery = gcloud.bigquery();
var dataset = bigquery.dataset('my-data-set');
var table = dataset.table('my-table');
var metadata = {
sourceFormat: 'AVRO'
};
var url = 'https://storage.googleapis.com/' + 'my-bucket' + '/' + 'yob1900.avro';
request.get(url)
.pipe(table.createWriteStream(metadata))
.on('complete', function (job) {
// Wait up to 60 seconds for job to complete
pollJobUntilDone(job, 60000, 0, function (err, metadata) {
if (err) {
return callback(err);
}
console.log('job completed', metadata);
});
});
function pollJobUntilDone (job, timeout, timeWaited, callback) {
job.getMetadata(function (err, metadata) {
if (err) {
return callback(err);
}
if (timeWaited > timeout) {
return callback(new Error('Timed out waiting for job to complete'));
}
if (metadata.status && (metadata.status.state === 'RUNNING' ||
metadata.status.state === 'PENDING')) {
setTimeout(function() {
console.log('working...');
pollJobUntilDone(job, timeout, timeWaited + 5000, callback);
}, 5000);
} else {
callback(null, metadata);
}
});
}
я получаю эту ошибку
'The Apache Avro library failed to parse file file-00000000.'
(далее « Файл yob1900 был загружен из документации bigquery https://cloud.google.com/bigquery/loading-data#loading_json_files) , когда я пытаюсь сделать это через успех webUI I. Любые предложения?
Я не знаю nodejs, но кажется, что файл avro не передается непосредственно в BigQuery. В сообщении об ошибке указано имя файла «file-00000000» вместо «yob1900.avro». Некоторое преобразование выполняется nodejs. –