2014-05-20 30 views
2

我一直在嘗試創建一個作業到加載將Google雲端存儲中的壓縮json文件加載到Google BigQuery表格。我在Google雲端存儲和Google BigQuery中都擁有讀/寫權限。此外,上傳的文件與BigQuery相同,屬於同一個項目。將存儲在Google雲端存儲中的文件加載到Big Query中時出錯

當我通過POST請求訪問此URL https://www.googleapis.com/upload/bigquery/v2/projects/NUMERIC_ID/jobs後面的資源時,會出現問題。請求上述資源的內容可以發現如下:

{ 
"kind" : "bigquery#job", 
"projectId" : NUMERIC_ID, 
"configuration": { 
    "load": { 
     "sourceUris": ["gs://bucket_name/document.json.gz"], 
     "schema": { 
      "fields": [ 
       { 
        "name": "id", 
        "type": "INTEGER" 
       }, 
       { 
        "name": "date", 
        "type": "TIMESTAMP" 
       }, 
       { 
        "name": "user_agent", 
        "type": "STRING" 
       }, 
       { 
        "name": "queried_key", 
        "type": "STRING" 
       }, 
       { 
        "name": "user_country", 
        "type": "STRING" 
       }, 
       { 
        "name": "duration", 
        "type": "INTEGER" 
       }, 
       { 
        "name": "target", 
        "type": "STRING" 
       } 
      ] 
     }, 
     "destinationTable": { 
      "datasetId": "DATASET_NAME", 
      "projectId": NUMERIC_ID, 
      "tableId": "TABLE_ID" 
     } 
    } 
} 

}

但是,錯誤不作任何意義,也可以在下面找到:

{ 
    "error": { 
     "errors": [ 
      { 
       "domain": "global", 
       "reason": "invalid", 
       "message": "Job configuration must contain exactly one job-specific configuration object (e.g., query, load, extract, spreadsheetExtract), but there were 0: " 
      } 
     ], 
     "code": 400, 
     "message": "Job configuration must contain exactly one job-specific configuration object (e.g., query, load, extract, spreadsheetExtract), but there were 0: " 
    } 
} 

我知道問題不在於項目ID或位於身份驗證頭中的訪問令牌,因爲我之前已成功創建了空表。我還指定內容類型標題爲application/json,我認爲這不是問題,因爲主體內容應該是json編碼。

在此先感謝

+0

該請求對我來說看起來沒問題。模式中的「目標」字段末尾會有一個額外的逗號,這可能會使API認爲您有0個作業配置。 –

+0

謝謝,但這個逗號是一個拼寫錯誤,因爲我刪除了這個模式中的更多元素,使得問題變得更簡單。問題仍然存在。 – rubioz

回答

1

你的HTTP請求的格式不正確 - BigQuery的完全不承認這是一個負荷工作。 您需要查看POST請求,並檢查您發送的主體。

您需要確保所有上述(哪些接縫正確)是POST調用的body。上面的Json應該在一行中,如果您手動創建多部分消息,請確保每個MIME類型的標頭和正文之間有額外的換行符。

如果您正在使用某種類型的庫,請確保不需要其他形式的資源,內容或正文。我見過使用這些不同的庫。

試用BigQuery API瀏覽器:https://developers.google.com/bigquery/docs/reference/v2/jobs/insert並確保您的請求正文與API所做的匹配。

+2

我跟着提供的鏈接,發現它的工作。區別在於它們不使用上傳終結點(它們使用https://www.googleapis.com/bigquery/v2/projects/NUMERIC_ID/jobs而不是https://www.googleapis.com/upload/bigquery/ V2 /項目/ NUMERIC_ID /工作)。此外,它們添加一個名爲'''key'''的查詢參數,該參數必須等於訪問令牌。它仍然沒有任何意義,但至少它是有效的。謝謝 – rubioz

相關問題