В настоящее время я экспортирую свои данные (из таблицы назначения в Bigquery) в ведро в GCS. Выполняйте это программно с помощью API Bigquery.Экспорт данных из BigQuery в GCS - возможен частичный перевод?
Существует ограничение при экспорте данных из Bigquery в GCS - данные не должны превышать 1 ГБ.
- Поскольку мои данные в таблице назначения более 1 ГБ, я разбил файлы на несколько частей.
- Количество частей, в которых файл будет разделен, будет зависеть от размера данных, которые у меня есть в моей таблице назначения.
Вот фрагмент кода для функции exportDataToGCS(), где это происходит:
http = authorize();
bigquery_service = build('bigquery', 'v2', http=http)
query_request = bigquery_service.jobs()
DESTINATION_PATH = constants.GCS_BUCKET_PATH + canonicalDate + '/'
query_data = {
'projectId': 'ga-cnqr',
'configuration': {
'extract': {
'sourceTable': {
'projectId': constants.PROJECT_ID,
'datasetId': constants.DEST_TABLES_DATASET_ID,
'tableId': canonicalDate,
},
'destinationUris': [DESTINATION_PATH + canonicalDate + '-*.gz'],
'destinationFormat': 'CSV',
'printHeader': 'false',
'compression': 'GZIP'
}
}
}
query_response = query_request.insert(projectId=constants.PROJECT_NUMBER,
body=query_data).execute()
После выполнения этой функции, в моем ГКС ведро, мои файлы отображаются следующим образом:
Однако, я хотел бы знать, может ли быть какие-либо сценарии, в которых файл должен был быть разделен на 10 частей, но только 3 части пробился в ведро б если вышеуказанная функция не удалась.
То есть, может быть частичный экспорт?
Могут ли такие причины, как падение сети или процесс, выполняющий функцию, убивать и т. Д., Приводят к этому? Этот процесс блокирует вызов? Асинхронный?
Заранее спасибо.
Update 1: Параметр состояния в ответ на запрос
Это, как я проверяю для DONE статуса.
while True:
status = query_request.get(projectId=constants.PROJECT_NUMBER, jobId=query_response['jobReference']['jobId']).execute()
if 'DONE' == status['status']['state']:
logging.info("Finished exporting for the date : " + stringCanonicalDate);
return
, когда вы говорите, что «вышеуказанная функция не удалась», есть ли сообщение об ошибке? или это ваш единственный признак неудачи в том, что вам не хватает 3 частей? – Patrice
Ответ на запрос, который вы возвращаете, имеет параметр «Статус». Если это значение равно «DONE», это означает, что запрос завершен. – activelearner
Проверьте обновление в моем вопросе.Первый фрагмент кода и второй фрагмент кода находятся в блоке try. – activelearner