Я использую Datalab для блокнота Python, который загружает данные из облачного хранилища в BigQuery в основном следуя этому примеру.
Затем я увидел, что мои исходные данные в корзине Cloud Storage находятся в ЕС (eu-west3-a), виртуальная машина, которая выполняет Datalab, находится в том же регионе, но окончательные данные в BigQuery находятся в США.
Согласно в этом посте я пытался установить местоположение набора данных в коде, но не сработало. Это связано с тем, что такой параметр не определен в Datalab.Bigquery. Модуль Python.
Итак, мой вопрос: как установить местоположение (зону и регион) для набора данных BigQuery и содержащих его таблиц?
Это мой код:
# data: https://www.kaggle.com/benhamner/sf-bay-area-bike-share/data
%%gcs read --object gs://my_bucket/kaggle/station.csv --variable stations
# CSV will be read as bytes first
df_stations = pd.read_csv(StringIO(stations))
schema = bq.Schema.from_data(df_stations)
# Create an empty dataset
#bq.Dataset('kaggle_bike_rentals').create(location='europe-west3-a')
bq.Dataset('kaggle_bike_rentals').create()
# Create an empty table within the dataset
table_stations = bq.Table('kaggle_bike_rentals.stations').create(schema = schema, overwrite = True)
# load data directly from cloud storage into the bigquery table. the locally loaded Pandas dataframe won't be used here
table_stations.load('gs://my_bucket/kaggle/station.csv', mode='append', source_format = 'csv', csv_options=bq.CSVOptions(skip_leading_rows = 1))
Обновление: тем временем я вручную создал набор данных в веб-интерфейсе BigQuery и использовал его в коде, не создавая его там. Теперь будет вызвано исключение, если набор данных не существует, что запрещает создание набора в коде, который приведет к местоположению по умолчанию в США.