簡體   English   中英

如何使用java api從雲存儲中獲取多個文件到大查詢

[英]how to get multiple files from cloud storage to big query using java api

我在雲存儲中有數據,我想將數據傳輸到大查詢並獲取統計信息。 目前我正在使用 JobConfigurationLoad 來獲取單個文件,這里是代碼示例:

JobConfigurationLoad jobconfigurationqLoad = new JobConfigurationLoad();
jobconfigurationqLoad.setSkipLeadingRows(1); // First line are columns names
    jobconfigurationqLoad.setSourceUris(Lists.newArrayList("gs://my_app/folder_name/test_file.csv"));
jobconfigurationqLoad.setWriteDisposition("WRITE_APPEND");
jobconfigurationqLoad.setEncoding(PlatformConstants.DEFAULT_ENCODING);
jobconfigurationqLoad.setCreateDisposition("CREATE_IF_NEEDED");
jobconfigurationqLoad.setDestinationTable(tableReference);
**tableReference = my table in big query
jobconfigurationqLoad.setSchemaInline("field1:STRING,field2:STRING");

// JobConfiguration
JobConfiguration jobConfiguration = new JobConfiguration();
jobConfiguration.setLoad(jobconfigurationqLoad);

// JobReference
JobReference jobreference = new JobReference();
jobreference.setProjectId(PROJECT_ID);

// Job
Job insertJob = new Job();
insertJob.setConfiguration(jobConfiguration);
insertJob.setJobReference(jobreference);

在“setSourceUris”中,我只想放置文件夾並獲取那里的所有文件,但這似乎不起作用。 我在 google api 上看到了一些關於獲取存儲桶內容的文檔,但不僅僅是存儲桶內的一個文件夾。 這個答案中有類似的東西。 我在 Java 中使用 GAE。

BigQuery API 的sourceUris方法要求您單獨列出每個源 URI(無法提供單個 Google Cloud Storage 存儲分區 URI)。

但是,是的,您可以使用 Google Cloud Storage API 提供對象 URI 列表 提供一個prefix參數來過濾結果列表。

請注意,您可以在單個加載作業中包含的最大文件數為 500(每個加載請求的最大數據量為 1Tb - 請參閱BigQuery 配額頁面)。

BigQuery APIs 有一個屬性:configuration.load.sourceUris[],它是一個可以包含一個或多個文件的數組。 名稱必須是“完全限定名稱,例如:gs://mybucket/myobject.csv”

有關更多信息,請查看: https : //developers.google.com/bigquery/docs/reference/v2/jobs

所以,正如邁克爾所說:“使用 Google Cloud Storage API 提供對象 URI 列表。提供前綴參數來過濾結果列表。”

然后將文件名放在作業的 sourceUris 數組中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM