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 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()方法仅从类路径中读取twitter4j.properties文件以构建Couchbase连接字符串。
  • injectTweets打开Couchbase连接-第76行,并调用TwitterStream API。
  • 创建一个ListenerListener将从Twitter接收所有onStatus (状态)。 最重要的方法是onStatus(),它接收消息并将其保存到Couchbase中。
  • 一件有趣的事情:由于Couchbase是JSON文档数据库,因此您可以直接获取JSON字符串并直接保存它。
    cbClient.add(idStr,0 ,twitterMessage);

打包

为了能够直接从Jar文件执行应用程序,我正在使用带有以下信息的Assembly插件:
pom.xml:

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

一些信息:

  • mainClass条目允许您设置运行java -jar命令时要执行的类。
  • Class-Path项允许您将当前目录设置为类路径的一部分,程序将在其中搜索twitter4j.properties文件。
  • 程序集文件还配置为包括所有依赖项(Twitter4J,Couchbase客户端SDK等)

如果您确实想从源代码构建它,只需运行:

mvn clean package

这将创建以下Jar文件。 /target/CouchbaseTwitterInjector.jar

运行Java应用程序

在运行该应用程序之前,您必须创建一个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=

保存属性文件,然后从同一位置运行:

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.html

couchbase

couchbase_Couchbase:使用Twitter和Java创建大型数据集相关推荐

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

    在播放/演示Couchbase或任何其他NoSQL引擎时,创建大型数据集的一种简单方法是将Twitter feed注入到数据库中. 对于这个小应用程序,我正在使用: Couchbase Server ...

  2. couchbase_Couchbase 101:从Java应用程序创建视图(MapReduce)

    couchbase 使用Couchbase 2.0开发新应用程序时,有时需要从代码中动态创建视图. 例如,在安装应用程序,编写一些测试时,可能会需要此方法:或者,在构建框架时,您也可以使用此方法,并希 ...

  3. 如何在Keras中训练大型数据集

    https://www.toutiao.com/a6670173759829180936/ 在本文中,我们将讨论如何使用Keras在不适合内存的大数据集上训练我们的深度学习网络. 介绍 深度学习算法优 ...

  4. python迭代数据类型_在大型数据集上自动迭代推断数据类型和最小项大小

    在我的工作领域,我经常得到一个很大的csv文件,根本没有关于内容或格式的信息.我正在尝试开发一个工作流来自动推断列的数据类型以及对象数据类型的最大字符串长度,最终目标是将格式化的数据集存储在HDFSt ...

  5. tensorflow tf.data.Dataset.from_tensor_slices() (创建一个“数据集”,其元素是给定张量的切片)

    from tensorflow\python\data\ops\dataset_ops.py @staticmethoddef from_tensor_slices(tensors):"&q ...

  6. java jwt 验证_教程:用Java创建和验证JWT

    java jwt 验证 "我喜欢编写身份验证和授权代码." 〜从来没有Java开发人员. 厌倦了一次又一次地建立相同的登录屏幕? 尝试使用Okta API进行托管身份验证,授权和多 ...

  7. 教程:用Java创建和验证JWT

    "我喜欢编写身份验证和授权代码." 〜从来没有Java开发人员. 厌倦了一次又一次地建立相同的登录屏幕? 尝试使用Okta API进行托管身份验证,授权和多因素身份验证. Java ...

  8. java什么时候创建进程,Java创建进程

    Java创建进程 1 进程的概念 1 1.1 进程的概念 1 1.2 进程的特征 1 1.3 进程与线程区别 1 2 进程的创建 1 2.1 JAVA进程的创建 1 2.1.1 ProcessBuil ...

  9. 【Python】pandas模块操作大型数据集

    pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的. Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具.pandas提供了大量能使我们 ...

最新文章

  1. excel批量更改超链接_Excel函数教程第23课:快速批量插入产品图片超链接,提高效率...
  2. 各国分析之-土耳其土库曼斯坦
  3. 【51nod】1239 欧拉函数之和 杜教筛
  4. Linux静态库、动态库的制作
  5. mysql-5.7.19-winx64_mysql5.7.19 winx64安装配置方法图文教程(win10)
  6. edius隐藏快捷键_EDIUS7 Pro快捷键使用方法及全部快捷键功能
  7. N1烧USB供电跳线修复方法
  8. 为什么QQ空间远离我们?
  9. 0ctf Babyheap 2017
  10. 加密一条保序的数据流
  11. 例题(8.3) 求一元二次方程的根 (1051)
  12. ECharts教程(未完)
  13. 阿拉伯数字跟中文汉字互转js
  14. java和noddjs哪个好,【RequireJS--API学习笔记】
  15. 计算机图形学基础1——MVP变换
  16. json对象和字符串相互转换
  17. JavaScript常用工具方法封装
  18. Kali2021双网卡设置
  19. asdl能够连接成功,不能打开网页,qq超时登陆
  20. JavaSE02-IO

热门文章

  1. 一文搞定 Spring Data Redis 详解及实战
  2. 架构师之路:从码农到架构师你差了哪些
  3. 图解HashMap和HashSet的内部工作机制
  4. 高级 Java 面试通关知识点整理
  5. JDK9新特性实战:简化流关闭新姿势
  6. java中求5的阶乘
  7. 定西市计算机考试,2019年3月甘肃省定西市计算机等级考试时间
  8. 服务器io修改,更改 Linux I/O 调度器来改善服务器性能
  9. Sprng boot(十三):Spring boot 小技巧
  10. spock测试_将Spock 1.3测试迁移到Spock 2.0