2012-08-12 29 views
0

我正在構建Java中的bigquery上傳器。目標是下載一個完整的Twitter流,並將其上傳到小時桶中,然後在Dremel中處理這些內容以進行主題檢測和跟蹤項目。這是Eclipse Juno中MacOSX上的所有Java,以及帶有本地Nexus代理的Maven。使用Nexus在Maven中訪問Java BigQuery工具

我被困在起始門;查找和編譯驗證並上傳CSV文件的簡單Java示例。最近我發現是bigquery-appengine-sample,雖然我不明白爲什麼我需要appengine來進行bigquery項目。稍後將探討。

問題是,該項目不會在maven中構建。在eclipse中沒有顯示錯誤標誌,但經常發生eclipse錯誤標誌是不可靠的。 POM中顯示此元素的紅色月食標誌:

com.google.apis 谷歌的API服務,BigQuery的 $ {} bigquery.version

Maven的安裝失敗,

[錯誤]無法執行項目目標bigquery-appengine-sample:無法解析項目com.google.api.client的依賴項:bigquery-appengi ne -sample:war:1.0.0-SNAPSHOT:以下工件無法解析:com.google.apis-samples:shared-sample-appengine:jar:1.3.2,com.google.api s:google-api -services-bigquery:jar:v2-rev18-1.7.2-beta:無法找到com.google.apis-samples:shared-sample-appengine:jar:1.3.2 in ... SOF將不允許URL。在..本地資源庫被緩存,分辨率將不會重試直到關係的更新間隔結束 或更新被迫 - > [幫助1]

的Nexus代理被用於http://mavenrepo.google-api-java-client.googlecode.com/hg/http://google-gson.googlecode.com/svn/mavenrepo/(二者組限定作爲SNAPSHOT)。這些似乎都沒有奏效。瀏覽存儲和索引都是空的(只是一個原型目錄)。但瀏覽遠程似乎工作AFAICT;顯示一個似乎完整的Maven存儲庫樹。

所以我的問題:如何用maven構建Java中的bigquery示例?

回答

0

我可以從外部觀察到谷歌,作爲所造成的問題的答案是:

  • 沒有Java的例子是可用的(沒有?),涵蓋上傳。發佈答案中地址處的示例 僅涵蓋查詢已存在於帳戶中的樣本數據 。

  • 最接近我需要的樣本似乎是 命令行和python樣本。但使用它們很複雜,因爲 每個樣本都是硬連線 只能與特定的Maven依賴項版本一起工作,樣本未被更新
    當新的API版本發佈時,以及舊的API版本通常無法通過
    maven。

  • 的行家問題似乎從使用似地特質版本 編號系統始發(如v2beta1-rev17-1.7.1-β-β例如高於
    )。 Maven依賴於嚴格遵守約定,並且這樣的版本號肯定不符合。要快速更改
    測試版代碼,版本號應該是主要#.minor#.micro-SNAPSHOT,如maven書中所述。正如評論中所解釋的那樣,沒有任何例外或者maven中斷。

緊急請求:請提供覆蓋所有大量查詢特徵,特別是步驟1一個工作 java的樣品;上傳數據。請將示例與API代碼捆綁在一起,以確保它們保持同步。並全面採用maven慣例,包括追溯。

1

有一些非App Engine的Java的樣品在這裏:http://code.google.com/p/google-bigquery-tools/source/browse/samples/java/

我用Sonatype的的Maven插件,並在最低限度,你的pom.xml應該是這樣的:基於

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>com.google</groupId> 
    <artifactId>google</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>jar</packaging> 

    <name>google</name> 
    <url>http://maven.apache.org</url> 

    <properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    </properties> 

    <dependencies> 
    <dependency> 
     <groupId>com.google.api-client</groupId> 
     <artifactId>google-api-client</artifactId> 
     <version>1.10.3-beta</version> 
    </dependency> 

    <dependency> 
     <groupId>com.google.apis</groupId> 
     <artifactId>google-api-services-bigquery</artifactId> 
     <version>v2-rev19-1.7.2-beta</version> 
    </dependency> 

    <dependency> 
     <groupId>com.google.oauth-client</groupId> 
     <artifactId>google-oauth-client</artifactId> 
     <version>1.8.0-beta</version> 
    </dependency> 
    </dependencies> 

    <repositories> 
     <repository> 
     <id>google-api-services</id> 
     <url>http://mavenrepo.google-api-java-client.googlecode.com/hg</url> 
     <snapshots> 
     <enabled>true</enabled> 
     </snapshots> 
    </repository>  
    </repositories> 

</project> 
+0

感謝您的示例代碼。很有幫助。但是,在導入maven項目和構建後,我遇到了和以前一樣的問題。 eclipse或maven都無法找到google-api-services-bigquery。也許在谷歌倉庫中可能會出現錯誤? – Bradjcox 2012-08-12 19:06:50

+0

嘿布拉德:所以,爲了測試,我創建了一個新的Eclipse項目(我正在使用Nexus Indexer Archetype目錄,跳過了原型選擇,並使用了上面剛更新的pom.xml)。我無法重現您所看到的錯誤。你確定你的項目正在更新依賴關係嗎? (項目菜單 - > Maven->更新依賴關係?) – 2012-08-13 18:22:10

+0

我想我可以看到在一些情況下發生了什麼,或許並非所有情況。有些樣本具有通過maven確實無法提供的依賴關係。我一直在使用bigquery-cmdline-sample來解決缺乏Java等價物的問題(我發佈了一個修復這個問題的請求)。它的pom依賴於不存在的google-api-services-bigquery v2-1.3.3-beta。將版本更改爲v2-rev12-1.6.0-beta可修復版本。有沒有什麼可以做的,以保持引用的依賴關係可用,或者(更好地)更新示例指向可用版本,這將是一個巨大的幫助。現在這太痛苦了。 – Bradjcox 2012-08-17 17:03:51

0

在測試出這些庫的url http://google-api-client-libraries.appspot.com/mavenrepo後,我能夠得到這個工作。它不允許瀏覽,所以nexus會試圖索引這個repo並失敗。發生這種情況時,Nexus阻止訪問此回購站,因此由於缺少依賴關係,本地生成失敗。

爲了緩解這個問題,我在Nexus中更改了這個存儲庫的兩個設置。

  • 下載遠程指數=假
  • 自動禁止啓用=假

有了這一套,我能夠正確地創建和下載的依賴。

注意:我們也使用GCM-Server Repo for Android,它有同樣的問題,應用了相同的解決方案,我們可以緩存新的依賴關係。

相關問題