日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > java >内容正文

java

Couchbase:使用Twitter和Java创建大型数据集

發(fā)布時(shí)間:2023/12/3 java 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Couchbase:使用Twitter和Java创建大型数据集 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在播放/演示Couchbase或任何其他NoSQL引擎時(shí),創(chuàng)建大型數(shù)據(jù)集的一種簡(jiǎn)單方法是將Twitter feed注入到數(shù)據(jù)庫(kù)中。

對(duì)于這個(gè)小應(yīng)用程序,我正在使用:

  • Couchbase Server 2.0服務(wù)器
  • Couchbase Java SDK (將由Maven安裝)
  • Twitter4J (將由Maven安裝)
  • 使用Twitter4J調(diào)用Twitter流API

在此示例中,我使用Java將Tweets注入Couchbase,如果需要,顯然可以使用其他語(yǔ)言。

該項(xiàng)目的資源可在我的Github存儲(chǔ)庫(kù)( 適用于Couchbase的Twitter Injector)上找到,您也可以在此處下載Binary版本,并從命令行執(zhí)行應(yīng)用程序,請(qǐng)參閱“運(yùn)行應(yīng)用程序”段落 。 不要忘記創(chuàng)建您的Twitter oAuth密鑰(請(qǐng)參閱下一段)

創(chuàng)建oAuth密鑰

能夠使用Twitter API的第一件事是創(chuàng)建一組密鑰。 如果您想進(jìn)一步了解所有這些鍵/令牌,請(qǐng)查看oAuth協(xié)議: http ://oauth.net/

1.登錄到Twitter開(kāi)發(fā)門(mén)戶: https : //dev.twitter.com/

2.創(chuàng)建一個(gè)新的應(yīng)用程序

點(diǎn)擊“創(chuàng)建應(yīng)用”鏈接或進(jìn)入“用戶菜單>我的應(yīng)用>創(chuàng)建新應(yīng)用”

3.輸入應(yīng)用程序詳細(xì)信息

4.單擊“創(chuàng)建您的Twitter應(yīng)用程序”按鈕

您的應(yīng)用程序的OAuth設(shè)置現(xiàn)已可用:

5-在“應(yīng)用程序設(shè)置”頁(yè)面上,然后單擊“創(chuàng)建我的訪問(wèn)令牌”按鈕

現(xiàn)在,您已擁有創(chuàng)建應(yīng)用程序所需的所有信息:

  • 消費(fèi)者密鑰
  • 消費(fèi)者秘密
  • 訪問(wèn)令牌
  • 訪問(wèn)令牌機(jī)密

從命令行運(yùn)行Java應(yīng)用程序時(shí),這些鍵將在twitter4j.properties文件中使用。請(qǐng)參閱

創(chuàng)建Java應(yīng)用程序

以下代碼是應(yīng)用程序的主要代碼:

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 List<URI> couchbaseServerUris = new ArrayList<URI>();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 i=0; i<uriStrings.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()方法僅從類(lèi)路徑中讀取twitter4j.properties文件以構(gòu)建Couchbase連接字符串。
  • injectTweets將打開(kāi)Couchbase連接-第76行,并調(diào)用TwitterStream API。
  • 將創(chuàng)建一個(gè)Listener ,并將從Twitter接收所有的onStatus (狀態(tài))。 最重要的方法是onStatus(),它接收消息并將其保存到Couchbase中。
  • 一件有趣的事情:由于Couchbase是一個(gè)JSON文檔數(shù)據(jù)庫(kù),因此您可以直接獲取JSON字符串并直接保存它。
    cbClient.add(idStr,0 ,twitterMessage);


打包

為了能夠直接從Jar文件執(zhí)行應(yīng)用程序,我正在使用帶有以下信息的Assembly插件:
pom.xml:

... <archive><manifest><mainclass>com.couchbase.demo.TwitterInjector</mainclass></manifest><manifestentries><class-path>.</class-path></manifestentries> </archive> ...

一些信息:

  • mainClass條目允許您設(shè)置運(yùn)行java -jar命令時(shí)要執(zhí)行的類(lèi)。
  • Class-Path條目允許您將當(dāng)前目錄設(shè)置為類(lèi)路徑的一部分,程序?qū)⒃谠撃夸浿兴阉鱰witter4j.properties文件。
  • 程序集文件還配置為包含所有依賴(lài)項(xiàng)(Twitter4J,Couchbase客戶端SDK等)

如果您確實(shí)想從源代碼構(gòu)建它,只需運(yùn)行:

mvn clean package

這將創(chuàng)建以下Jar文件。 /target/CouchbaseTwitterInjector.jar

運(yùn)行Java應(yīng)用程序

在運(yùn)行該應(yīng)用程序之前,您必須創(chuàng)建一個(gè)twitter4j.properties文件,其中包含以下信息:

twitter4j.jsonStoreEnabled=trueoauth.consumerKey=[YOUR CONSUMER KEY] oauth.consumerSecret=[YOUR CONSUMER SECRET KEY] oauth.accessToken=[YOUR ACCESS TOKEN] oauth.accessTokenSecret=[YOUR ACCESS TOKEN SECRET]couchbase.uri.list=http://127.0.0.1:8091/pools couchbase.bucket=default couchbase.password=

保存屬性文件,然后從同一位置運(yùn)行:

jar -jar [path-to-jar]/CouchbaseTwitterInjector.jar

這會(huì)將推文注入您的Couchbase服務(wù)器。 請(qǐng)享用 !

參考: Couchbase:通過(guò)Tug博客博客中的JCG合作伙伴 Tugdual Grall 使用Twitter和Java創(chuàng)建大型數(shù)據(jù)集 。

翻譯自: https://www.javacodegeeks.com/2012/11/couchbase-create-a-large-dataset-using-twitter-and-java.html

總結(jié)

以上是生活随笔為你收集整理的Couchbase:使用Twitter和Java创建大型数据集的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。