0

我刚开始用 Java 构建一个 bigquery 上传器。目标是下载完整的 twitter 流并将其上传到每小时存储桶中,然后在 Dremel 中处理这些流以用于主题检测和跟踪项目。这是 Eclipse Juno 中 MacOSX 上的所有 Java,以及带有本地 Nexus 代理的 Maven。

我被困在起跑门;查找并编译一个简单的 Java 示例,用于验证和上传 CSV 文件。我发现最接近的是 bigquery-appengine-sample,尽管我不明白为什么我需要 appengine 来完成 bigquery 项目。稍后将对此进行探索。

问题是,该项目不会在 Maven 中构建。eclipse 中没有显示错误标志,但通常 eclipse 错误标志是不可靠的。pom 在这个元素上显示了一个红色的日食标志:

com.google.apis google-api-services-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: 失败要在 ...SOF 不允许 URL... 中找到 com.google.apis-samples:shared-sample-appengine:jar:1.3.2... 已缓存在本地存储库中,直到更新间隔才会重新尝试解析已过期或强制更新 -> [帮助 1]

Nexus 代理是为http://mavenrepo.google-api-java-client.googlecode.com/hg/http://google-gson.googlecode.com/svn/mavenrepo/定义的(都设置为 SNAPSHOT)。这些似乎都不起作用。浏览存储和索引都是空的(只是一个原型目录)。但是 Browse Remote 似乎确实适用于 AFAICT;显示了一个看起来完整的 Maven 存储库树。

所以我的问题是:如何使用 maven 在 Java 中构建 bigquery 示例?

4

3 回答 3

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>
于 2012-08-12T18:39:46.617 回答
0

根据我从谷歌外部观察到的情况,所提出问题的答案是:

  • 没有涵盖上传的 Java 示例(还没有?)。已发布答案中地址的示例仅涵盖查询帐户中已存在的示例数据。

  • 最接近我需要的示例似乎是命令行和 python 示例。但是使用它们很复杂,因为每个示例都被硬连接到只能与特定的 maven 依赖版本一起使用,
    当新的 API 版本发布时,示例不会被更新,并且旧的 API 版本通常不能通过
    maven 获得。

  • maven 问题似乎源于使用了一个非常奇特的版本编号系统(例如
    上面的 v2beta1-rev17-1.7.1-beta-beta 示例)。Maven 依赖于严格遵守约定,而这样的
    版本号肯定不符合。对于快速变化的
    beta 代码,版本号应该是maven book 中记录的major#.minor#.micro-SNAPSHOT。如评论中所述,没有例外或 Maven 中断。

紧急请求:请提供涵盖所有 BigQuery 功能(尤其是第 1 步)的有效Java 示例;上传数据。请将示例与 API 代码捆绑在一起,以确保它们保持同步。并在整个过程中采用 Maven 约定,包括追溯。

于 2012-08-17T20:49:15.277 回答
0

在测试了这些库的 url http://google-api-client-libraries.appspot.com/mavenrepo后,我能够让它工作。它不允许浏览,因此 nexus 将尝试索引此 repo 并失败。发生这种情况时,Nexus 会阻止访问此存储库,因此本地构建会由于缺少依赖项而失败。

为了缓解这个问题,我在 Nexus 中为此存储库更改了两个设置。

  • 下载远程索引 = false
  • 启用自动阻止 = 假

有了这个集合,我能够正确地构建和下载依赖项。

注意:我们还使用 GCM-Server Repo for Android,它也有同样的问题,应用了相同的解决方案,我们能够缓存新的依赖项。

于 2013-01-09T01:53:10.537 回答