网站建设流程步骤,seo北京,紧急通知河南全省暂停,网站空间换了 使用原有域名couchbase在播放/演示Couchbase或任何其他NoSQL引擎时#xff0c;创建大型数据集的一种简单方法是将Twitter feed注入数据库。 对于这个小应用程序#xff0c;我正在使用#xff1a; Couchbase Server 2.0服务器 Couchbase Java SDK #xff08;将由Maven安装#xff0… couchbase 在播放/演示Couchbase或任何其他NoSQL引擎时创建大型数据集的一种简单方法是将Twitter feed注入数据库。 对于这个小应用程序我正在使用 Couchbase Server 2.0服务器 Couchbase Java SDK 将由Maven安装 Twitter4J 将由Maven安装 使用Twitter4J调用Twitter流API 在此示例中我使用Java将Tweets注入Couchbase如果需要显然可以使用其他语言。 我的Github存储库Twitter Injector for Couchbase上提供了该项目的源代码您也可以在此处下载Binary版本然后从命令行执行应用程序请参阅“运行应用程序”段落 。 不要忘记创建您的Twitter oAuth密钥请参阅下一段 创建oAuth密钥 能够使用Twitter API的第一件事是创建一组密钥。 如果您想进一步了解所有这些键/令牌请查看oAuth协议 http ://oauth.net/ 1.登录到Twitter开发门户 https : //dev.twitter.com/ 2.创建一个新的应用程序 单击“创建应用程序”链接或进入“用户菜单我的应用程序创建新应用程序” 3.输入应用程序详细信息 4.单击“创建您的Twitter应用程序”按钮 您的应用程序的OAuth设置现已可用 5-转到“应用程序设置”页面然后单击“创建我的访问令牌”按钮 现在您已拥有创建应用程序所需的所有信息 消费者密钥 消费者秘密 访问令牌 访问令牌机密 从命令行运行Java应用程序时这些键将在twitter4j.properties文件中使用。请参阅 创建Java应用程序 以下代码是应用程序的主要代码 package com.couchbase.demo;import com.couchbase.client.CouchbaseClient;
import org.json.JSONException;
import org.json.JSONObject;
import twitter4j.*;
import twitter4j.json.DataObjectFactory;import java.io.InputStream;
import java.net.URI;import java.util.ArrayList;
import java.util.List;
import java.util.Properties;public class TwitterInjector {public final static String COUCHBASE_URIS couchbase.uri.list;public final static String COUCHBASE_BUCKET couchbase.bucket;public final static String COUCHBASE_PASSWORD couchbase.password;private ListURI couchbaseServerUris new ArrayListURI();private String couchbaseBucket default;private String couchbasePassword ;public static void main(String[] args) {TwitterInjector twitterInjector new TwitterInjector();twitterInjector.setUp();twitterInjector.injectTweets();}private void setUp() {try {Properties prop new Properties();InputStream in TwitterInjector.class.getClassLoader().getResourceAsStream(twitter4j.properties);if (in null) {throw new Exception(File twitter4j.properties not found);}prop.load(in);in.close();if (prop.containsKey(COUCHBASE_URIS)) {String[] uriStrings prop.getProperty(COUCHBASE_URIS).split(,);for (int i0; iuriStrings.length; i) {couchbaseServerUris.add( new URI( uriStrings[i] ) );}} else {couchbaseServerUris.add( new URI(http://127.0.0.1:8091/pools) );}if (prop.containsKey(COUCHBASE_BUCKET)) {couchbaseBucket prop.getProperty(COUCHBASE_BUCKET);}if (prop.containsKey(COUCHBASE_PASSWORD)) {couchbasePassword prop.getProperty(COUCHBASE_PASSWORD);}} catch (Exception e) {System.out.println( e.getMessage() );System.exit(0);}}private void injectTweets() {TwitterStream twitterStream new TwitterStreamFactory().getInstance();try {final CouchbaseClient cbClient new CouchbaseClient( couchbaseServerUris , couchbaseBucket , couchbasePassword );System.out.println(Send data to : couchbaseServerUris / couchbaseBucket );StatusListener listener new StatusListener() {Overridepublic void onStatus(Status status) {String twitterMessage DataObjectFactory.getRawJSON(status);// extract the id_str from the JSON document// see : https://dev.twitter.com/docs/twitter-ids-json-and-snowflaketry {JSONObject statusAsJson new JSONObject(twitterMessage);String idStr statusAsJson.getString(id_str);cbClient.add( idStr ,0, twitterMessage );System.out.print(.);} catch (JSONException e) {e.printStackTrace(); }}Overridepublic void onDeletionNotice(StatusDeletionNotice statusDeletionNotice) {}Overridepublic void onTrackLimitationNotice(int numberOfLimitedStatuses) {}Overridepublic void onScrubGeo(long userId, long upToStatusId) {}Overridepublic void onException(Exception ex) {ex.printStackTrace();}};twitterStream.addListener(listener);twitterStream.sample();} catch (Exception e) {e.printStackTrace(); }}} 一些基本的解释 setUp()方法仅从类路径中读取twitter4j.properties文件以构建Couchbase连接字符串。 injectTweets打开Couchbase连接-第76行并调用TwitterStream API。 创建一个Listener该Listener将从Twitter接收所有onStatus 状态。 最重要的方法是onStatus它接收消息并将其保存到Couchbase中。 一件有趣的事情由于Couchbase是JSON文档数据库因此您可以直接获取JSON字符串并直接保存它。 cbClient.add(idStr,0 ,twitterMessage); 打包 为了能够直接从Jar文件执行应用程序我正在使用带有以下信息的Assembly插件 pom.xml ...
archivemanifestmainclasscom.couchbase.demo.TwitterInjector/mainclass/manifestmanifestentriesclass-path./class-path/manifestentries
/archive
... 一些信息 mainClass条目允许您设置运行java -jar命令时要执行的类。 Class-Path项允许您将当前目录设置为类路径的一部分程序将在其中搜索twitter4j.properties文件。 程序集文件还配置为包括所有依赖项Twitter4JCouchbase客户端SDK等 如果您确实想从源代码构建它只需运行 mvn clean package 这将创建以下Jar文件。 /target/CouchbaseTwitterInjector.jar 运行Java应用程序 在运行该应用程序之前您必须创建一个twitter4j.properties文件其中包含以下信息 twitter4j.jsonStoreEnabledtrueoauth.consumerKey[YOUR CONSUMER KEY]
oauth.consumerSecret[YOUR CONSUMER SECRET KEY]
oauth.accessToken[YOUR ACCESS TOKEN]
oauth.accessTokenSecret[YOUR ACCESS TOKEN SECRET]couchbase.uri.listhttp://127.0.0.1:8091/pools
couchbase.bucketdefault
couchbase.password 保存属性文件然后从同一位置运行 jar -jar [path-to-jar]/CouchbaseTwitterInjector.jar 这会将推文注入您的Couchbase服务器。 请享用 参考 Couchbase通过Tug博客博客中的JCG合作伙伴 Tugdual Grall 使用Twitter和Java创建大型数据集 。 翻译自: https://www.javacodegeeks.com/2012/11/couchbase-create-a-large-dataset-using-twitter-and-java.htmlcouchbase