我刚刚开始在Java中构建一个bigquery上传器。目标是下载完整的Twitter流并将其上传到每小时桶中,然后在Dremel中处理这些以进行主题检测和跟踪项目。这是Eclipse Juno中MacOSX上的所有Java,以及带有本地Nexus代理的Maven。
我被困在起跑门;查找并编译一个验证和上传CSV文件的简单Java示例。我发现最接近的是bigquery-appengine-sample,虽然我不明白为什么我需要一个bigquery项目的appengine。稍后会探讨。
问题是,该项目不会在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 ...缓存在本地存储库中,直到nexus的更新间隔已经过去才会重新尝试解析 或强制更新 - > [帮助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 :(得分: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>
答案 1 :(得分:0)
根据我从谷歌外面可以观察到的内容,提出问题的答案是:
没有可用的java示例(还有?),其中包含上传内容。例子 在发布的答案中的地址仅包括查询样本数据 已存在于帐户中。
最接近我需要的样本似乎是 命令行和python示例。但使用它们很复杂 每个样本都是硬接线的 只能使用特定的maven依赖版本,样本不会更新 发布新的API版本时,通常不会提供较旧的API版本 行家。
maven问题似乎源于使用一个疯狂的特殊版本
编号系统(例如v2beta1-rev17-1.7.1-beta-beta示例
以上)。 Maven依赖严格遵守惯例,等等
版本号绝对不符合。对于快速变化的
测试版代码,版本号应该是主要的#.minor#.micro-SNAPSHOT,如maven书中所述。没有异常或专家休息,如评论中所述。
紧急请求:请提供涵盖所有BigQuery功能的工作 java示例,尤其是第1步;上传数据。请将示例与API代码捆绑在一起,以确保它们保持同步。并在整个过程中采用maven惯例,包括追溯。
答案 2 :(得分:0)
在测试了这些库的URL http://google-api-client-libraries.appspot.com/mavenrepo之后,我能够使用它。它不允许浏览,因此nexus将尝试索引此repo并失败。当发生这种情况时,Nexus会阻止对此repo的访问,因此本地构建因缺少依赖性而失败。
为了缓解这种情况,我在Nexus中为此存储库更改了两个设置。
通过这个集合,我能够正确地构建和下载依赖项。
注意:我们也使用GCM-Server Repo for Android,它有同样的问题,应用了相同的解决方案,我们能够缓存新的依赖关系。