成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Hadoop和Couchbase結(jié)合使用的技巧

運維 系統(tǒng)運維 Hadoop
Hadoop非常適合處理大量數(shù)據(jù)并將該信息解析為您可查詢的較小的信息集。但是,通過與 Couchbase Server 集成,您可以對信息執(zhí)行實時查詢和報告,同時繼續(xù)使用 Hadoop 處理大型數(shù)據(jù)集和數(shù)據(jù)集的繁重處理工作。Couchbase Server 還使用了一個 MapReduce 查詢系統(tǒng),這使您能夠輕松地遷移和集成索引和查詢系統(tǒng),從而有效地提取和操作信息。

Hadoop 和數(shù)據(jù)處理

Hadoop 將許多重要特性結(jié)合在一起,這使 Hadoop 對于將大量數(shù)據(jù)分解為更小、實用的數(shù)據(jù)塊非常有用。

Hadoop 的主要組件是 HDFS 文件系統(tǒng),它支持將信息分布到整個集群中。對于使用這種分布格式存儲的信息,可以通過一個名為 MapReduce 的系統(tǒng)在每個集群節(jié)點上進(jìn)行單獨處理。MapReduce 進(jìn)程將存儲在 HDFS 文件系統(tǒng)中的信息轉(zhuǎn)換為更小的、經(jīng)過處理的、更容易管理的數(shù)據(jù)塊。

因為 Hadoop 可在多個節(jié)點上運行,所以可以使用它來處理大量輸入數(shù)據(jù),并將這些數(shù)據(jù)簡化為更實用的信息塊。此過程可使用一個簡單的 MapReduce 系統(tǒng)來處理。

MapReduce 轉(zhuǎn)換傳入信息(不一定為結(jié)構(gòu)化格式),將該信息轉(zhuǎn)換為一種可更輕松地使用、查詢和處理的結(jié)構(gòu)。

例如,一種典型的用途是處理來自數(shù)百個不同應(yīng)用程序的日志信息,以便可以識別特定的問題、計數(shù)或其他事件。通過使用 MapReduce 格式,您可以開始度量并查找趨勢,將平常非常多的信息轉(zhuǎn)換為更小的數(shù)據(jù)塊。舉例而言,在查看某個 Web 服務(wù)器的日志時,您可能希望查看特定頁面上的特定范圍中發(fā)生的錯誤。您可以編寫一個 MapReduce 函數(shù)來識別特定頁面上的特定錯誤,并在輸出中生成該信息。使用此方法,您可從日志文件中精減多行信息,得到一個僅包含錯誤信息的小得多的記錄集合。

理解 MapReduce

MapReduce 的工作方式分兩個階段。映射 (map) 過程獲取傳入信息,并將這些信息映射到某種標(biāo)準(zhǔn)化的格式。對于某些信息類型,此映射可以是直接和顯式的。例如,如果要處理 Web 日志等輸入數(shù)據(jù),那么僅從 Web 日志的文本中提取一列數(shù)據(jù)即可。對于其他數(shù)據(jù),映射可能更復(fù)雜。在處理文本信息時,比如研究論文,您可能需要提取短語或更復(fù)雜的數(shù)據(jù)塊。

精減 (reduce) 階段用于收集和匯總數(shù)據(jù)。精減實際上能夠以多種不同方式發(fā)生,但典型的過程是處理一個基本計數(shù)、總和或其他基于來自映射階段的個別數(shù)據(jù)的統(tǒng)計數(shù)據(jù)。

想象一個簡單的示例,比如 Hadoop 中用作示例 MapReduce 的字?jǐn)?shù),映射階段將對原始文本進(jìn)行分解,以識別各個單詞,并為每個單詞生成一個輸出數(shù)據(jù)塊。reduce 函數(shù)獲取這些映射的信息塊,對它們進(jìn)行精減,以便在所看到的每個惟一單詞上進(jìn)行遞增。給定一個包含 100 個單詞的文本文件,映射過程將生成 100 個數(shù)據(jù)塊,但精減階段可對此進(jìn)行匯總,提供惟一單詞的數(shù)量(比如 56 個)和每個單詞出現(xiàn)的次數(shù)。

借助 Web 日志,映射將獲取輸入數(shù)據(jù),為日志文件中的每個錯誤創(chuàng)建一條記錄,然后為每個錯誤生成一個數(shù)據(jù)塊,其中包含日期、時間和導(dǎo)致該問題的頁面。

在 Hadoop 內(nèi),MapReduce 階段會出現(xiàn)在存儲各個源信息塊的各個節(jié)點上。這使 Hadoop 能夠處理以下大型信息集:通過允許多個節(jié)點同時處理數(shù)據(jù)。例如,對于 100 個節(jié)點,可以同時處理 100 個日志文件,比通過單個節(jié)點快得多地簡化許多 GB(或 TB)的信息。

Hadoop 信息

核心 Hadoop 產(chǎn)品的一個主要限制是,無法在數(shù)據(jù)庫中存儲和查詢信息。數(shù)據(jù)添加到 HDFS 系統(tǒng)中,但您無法要求 Hadoop 返回與某個特定數(shù)據(jù)集匹配的所有數(shù)據(jù)的列表。主要原因是 Hadoop 不會存儲、結(jié)構(gòu)化或理解存儲在 HDFS 中的數(shù)據(jù)的結(jié)構(gòu)。這正是 MapReduce 系統(tǒng)需要將信息分析并處理為更加結(jié)構(gòu)化的格式的原因。

但是,我們可以將 Hadoop 的處理能力與更加傳統(tǒng)的數(shù)據(jù)庫相結(jié)合,使我們可以查詢 Hadoop 通過自己的 MapReduce 系統(tǒng)生成的數(shù)據(jù)??赡艿慕鉀Q方案有許多,其中包括一些傳統(tǒng) SQL 數(shù)據(jù)庫,但我們可以通過使用 Couchbase Server 來保持 MapReduce 風(fēng)格(它對大型數(shù)據(jù)集非常有效)。

系統(tǒng)之間的數(shù)據(jù)共享的基本結(jié)構(gòu)如 圖 1 所示。


圖 1. 系統(tǒng)之間的數(shù)據(jù)共享的基本結(jié)構(gòu)#p#

安裝 Hadoop

如果您尚未安裝 Hadoop,最簡單的方法是使用一個 Cloudera 安裝。為了保持 Hadoop、Sqoop 和 Couchbase 之間的兼容性,***的解決方案是使用 CDH3 安裝(參閱參考資料)。為此,您需要使用 Ubuntu 10.10 到 11.10 版。更高的 Ubuntu 版本會引入不兼容問題,因為它們不再支持 Cloudera Hadoop 安裝所需的一個包。

在安裝之前,請確保已經(jīng)安裝了一個 Java™ 虛擬機(jī),確保在 JAVA_HOME 變量中為 JDK 配置了正確的主目錄。請注意,您必須擁有完整的 Java 開發(fā)工具包,而不只是擁有 Java 運行時環(huán)境 (JRE),因為 Sqoop 將代碼編譯為 Couchbase Server 與 Hadoop 之間的導(dǎo)出和導(dǎo)入數(shù)據(jù)。

要在 Ubuntu 和類似的系統(tǒng)上使用 CDH3 安裝,您需要執(zhí)行以下步驟:

  1、下載 CDH3 配置包。這會將 CDH3 源文件的配置添加到 apt 存儲庫中。

  2、更新您的存儲庫緩存:$ apt-get update。

  3、。安裝主要 Hadoop 包:$ apt-get install hadoop-0.20。

  4、安裝 Hadoop 組件(參見 清單 1)

  清單 1. 安裝 Hadoop 組件 

  $ for comp in namenode datanode secondarynamenode jobtracker tasktracker
  do
  apt-get install hadoop-0.20-$comp
  done

5、編輯配置文件,以確保您設(shè)置了核心組件。

  6、編輯 /etc/hadoop/conf/core-site.xml,使其如 清單 2 所示。

  清單 2. 編輯后的 /etc/hadoop/conf/core-site.xml 文件

  <configuration>
  <property>
  <name>fs.default.name</name>
  <value>hdfs://localhost:9000</value>
  </property>
  </configuration>

  這將配置存儲數(shù)據(jù)的默認(rèn) hdfs 位置。

  編輯 /etc/hadoop/conf/hdfs-site.xml(參見 清單 3)。

  清單 3. 編輯后的 /etc/hadoop/conf/hdfs-site.xml 文件

  <configuration>
  <property>
  <name>dfs.replication</name>
  <value>1</value>
  </property>
  </configuration>

  這支持復(fù)制存儲的數(shù)據(jù)。

  編輯 /etc/hadoop/conf/mapred-site.xml(參見 清單 4)。

  清單 4. 編輯后的 /etc/hadoop/conf/mapred-site.xml 文件

  <configuration>
  <property>
  <name>mapred.job.tracker</name>
  <value>localhost:9001</value>
  </property>
  </configuration>

  這實現(xiàn)了 MapReduce 的作業(yè)跟蹤器。

  7、***,編輯 Hadoop 環(huán)境,使其正確地指向 /usr/lib/hadoop/conf/hadoop-env.sh 中您的 JDK 安裝目錄。其中會有一個注釋掉的 JAVA_HOME 變量行。您應(yīng)該取消注釋它,并將它設(shè)置為您的 JDK 位置。例如:export JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk。

  8、現(xiàn)在,在您的系統(tǒng)上啟動 Hadoop。最簡單的方法是使用 start-all.sh 腳本:$ /usr/lib/hadoop/bin/start-all.sh。

  假設(shè)所有設(shè)置均已正確配置,您現(xiàn)在應(yīng)有一個正在運行的 Hadoop 系統(tǒng)。#p#

  Couchbase Server 概述

  Couchbase Server 是一個集群化的、基于文檔的數(shù)據(jù)庫系統(tǒng),它使用一個緩存層來提供非??斓臄?shù)據(jù)訪問,將大部分?jǐn)?shù)據(jù)都存儲在 RAM 中。該系統(tǒng)使用多個節(jié)點和一個自動分散在整個集群上的緩存層。這實現(xiàn)了一種彈性,您可擴(kuò)大和緊縮集群,以便利用更多 RAM 或磁盤 I/O 來幫助提升性能。

  Couchbase Server 中的所有數(shù)據(jù)最終會持久存儲在磁盤中,但最初會通過緩存層執(zhí)行寫入和更新操作,這正是提供高性能的源泉,是我們通過處理 Hadoop 數(shù)據(jù)來獲得實時信息和查詢內(nèi)容時可利用的優(yōu)勢。

  Couchbase Server 的基本形式是一個基本文檔和基于鍵/值的存儲。只有在您知道文檔 ID 時,才能檢索集群提供的信息。在 Couchbase Server 2.0 中,您可以將文檔存儲為 JSON 格式,然后使用視圖系統(tǒng)在存儲的 JSON 文檔上創(chuàng)建一個視圖。視圖是在存儲在數(shù)據(jù)庫中的文檔上執(zhí)行的一個 MapReduce 組合。來自視圖的輸出是一個索引,它通過 MapReduce 函數(shù)來匹配您定義的結(jié)構(gòu)。索引的存在為您提供了查詢底層的文檔數(shù)據(jù)的能力。

  我們可以使用此功能從 Hadoop 獲取已處理的信息,將該信息存儲在 Couchbase Server 中,然后使用它作為查詢該數(shù)據(jù)的基礎(chǔ)。Couchbase Server 可以方便地使用一個 MapReduce 系統(tǒng)來處理文檔和創(chuàng)建索引。這在用于處理數(shù)據(jù)的方法之間提供了一定的兼容性和一致性水平。

  安裝 Couchbase Server

  安裝 Couchbase Server 很容易。從 Couchbase 網(wǎng)站下載適合您平臺的 Couchbase Server 2.0 版本(參見 參考資料),使用 dpkg 或 RPM(具體依賴于您的平臺)安裝該包。

  安裝之后,Couchbase Server 會自動啟動。要配置它,請打開一個 Web 瀏覽器,并將它指向您的機(jī)器的 localhost:8091(或使用該機(jī)器的 IP 地址遠(yuǎn)程訪問它)。

  按照屏幕上的配置說明進(jìn)行操作。您可使用在安裝期間提供的大部分默認(rèn)設(shè)置,但最重要的設(shè)置是寫入數(shù)據(jù)庫中的數(shù)據(jù)的數(shù)據(jù)文件的位置,以及您分配給 Couchbase Server 的 RAM 量。#p#

  使 Couchbase Server 能夠與 Hadoop 連接器通信

  Couchbase Server 使用 Sqoop 連接器與您的 Hadoop 集群通信。Sqoop 提供了一個連接在 Hadoop 與 Couchbase Server 之間批量傳輸數(shù)據(jù)。

  從技術(shù)上講,Sqoop 是一個設(shè)計用于在結(jié)構(gòu)化數(shù)據(jù)庫與 Hadoop 之間轉(zhuǎn)換信息的應(yīng)用程序。Sqoop 這個名稱實際上來源于 SQL 和 Hadoop。

  安裝 Sqoop

  如果使用 CDH3 安裝,您可使用報管理器來安裝 Sqoop:$ sudo apt-get install sqoop。

  這將把 Sqoop 安裝在 /usr/lib/sqoop 中。

  注意:Sqoop 中一個***的 bug 表明它有時會嘗試傳輸uowu的數(shù)據(jù)集。修補(bǔ)程序包含在 Sqoop 1.4.2 版中。如果遇到問題,請嘗試使用 V1.4.2 或更高的版本。

  安裝 Couchbase Hadoop Connector

  Couchbase Hadoop Connector 是一個支持 Sqoop 與 Couchbase 之間的連接的 Java jar 文件集合。從 Couchbase 網(wǎng)站下載 Hadoop 連接器(參閱 參考資料)。該文件封裝為一個 zip 文件。解壓它,然后運行其中的 install.sh 腳本,提供 Sqoop 系統(tǒng)的位置。例如:$ sudo bash install.sh /usr/lib/sqoop。

  這將安裝所有必要的庫和配置文件?,F(xiàn)在我們可以開始在兩個系統(tǒng)之間交換信息了。

將數(shù)據(jù)從 Couchbase Server 導(dǎo)入 Hadoop

  盡管該場景不是我們這里將直接處理的場景,但需要注意我們可從 Couchbase Server 將數(shù)據(jù)導(dǎo)入 Hadoop。如果您在 Couchbase Server 中加載了大量數(shù)據(jù),并希望利用 Hadoop 來處理和簡化它,這可能很有用。為此,您可以使用以下命令,從 Couchbase Server 將整個數(shù)據(jù)集加載到 HDFS 中的一個 Hadoop 文件中:$ sqoop import --connect http://192.168.0.71:8091/pools --table cbdata。

  這里提供的 URL 是 Couchbase Server 桶池 (bucket pool) 的位置。這里指定的表實際上是 HDFS 中將存儲數(shù)據(jù)的目錄的名稱。

  數(shù)據(jù)本身被存儲為來自 Couchbase Server 的信息的一種鍵/值轉(zhuǎn)儲形式。在 Couchbase Server 2.0 中,這意味著數(shù)據(jù)是使用惟一文檔 ID 寫出的,包含記錄的 JSON 值。

  將 JSON 數(shù)據(jù)寫入 Hadoop MapReduce

  要在 Hadoop 與 Couchbase Server 之間交換信息,需要使用一種通用語言來表達(dá)這些信息,在本例中使用的是 JSON(參見 清單 5)。

  清單 5. 在 Hadoop MapReduce 中輸出 JSON

  package org.mcslp;
  import java.io.IOException;
  import java.util.*;
  import org.apache.hadoop.fs.Path;
  import org.apache.hadoop.conf.*;
  import org.apache.hadoop.io.*;
  import org.apache.hadoop.mapred.*;
  import org.apache.hadoop.util.*;
  import com.google.gson.*;
  public class WordCount {
  public static class Map extends MapReduceBase implements Mapper<LongWritable,
  Text, Text, IntWritable> {
  private final static IntWritable one = new IntWritable(1);
  private Text word = new Text();
  public void map(LongWritable key, Text value, OutputCollector<Text,
  IntWritable> output, Reporter reporter) throws IOException {
  String line = value.toString();
  StringTokenizer tokenizer = new StringTokenizer(line);
  while (tokenizer.hasMoreTokens()) {
  word.set(tokenizer.nextToken());
  output.collect(word, one);
  }
 }
}
  public static class Reduce extends MapReduceBase implements Reducer<Text,
  IntWritable, Text, Text> {
  class wordRecord {
  private String word;
  private int count;
  wordRecord() {
  }
 }
  public void reduce(Text key,
  Iterator<IntWritable> values,
  OutputCollector<Text, Text> output,
  Reporter reporter) throws IOException {
  int sum = 0;
  while (values.hasNext()) {
  sum += values.next().get();
  }
  wordRecord word = new wordRecord();
  word.word = key.toString();;
  word.count = sum;
  Gson json = new Gson();
  System.out.println(json.toJson(word));
  output.collect(key, new Text(json.toJson(word)));
  }
 }
  public static void main(String[] args) throws Exception {
  JobConf conf = new JobConf(WordCount.class);
  conf.setJobName("wordcount");
  conf.setOutputKeyClass(Text.class);
  conf.setOutputValueClass(IntWritable.class);
  conf.setMapperClass(Map.class);
  conf.setReducerClass(Reduce.class);
  conf.setInputFormat(TextInputFormat.class);
  conf.setOutputFormat(TextOutputFormat.class);
  FileInputFormat.setInputPaths(conf, new Path(args[0]));
  FileOutputFormat.setOutputPath(conf, new Path(args[1]));
  JobClient.runJob(conf);
  }
 }

 

 

   該代碼是 Hadoop 發(fā)行版所提供的字?jǐn)?shù)示例的修改版。

  此版本使用 Google Gson 庫從處理過程的精減階段寫入 JSON 信息。為了方便起見,我們使用了一個新類 (wordRecord),它由 Gson 轉(zhuǎn)換為一條 JSON 記錄,這種記錄是 Couchbase Server 逐個文檔地處理和解析內(nèi)容所需的格式。

  請注意,我們沒有為 Hadoop 定義一個 Combiner 類。這將阻止 Hadoop 嘗試重新精減該信息,該操作在當(dāng)前的代碼中會失敗,因為我們的精減階段僅接收該單詞和一位數(shù),并輸出一個 JSON 值。對于輔助的精減/組合階段,我們需要解析 JSON 輸入或定義一個新 Combiner 類,以便輸出信息的 JSON 版本。這稍微簡化了定義。

  要在 Hadoop 中使用此代碼,首先需要將 Google Gson 庫復(fù)制到 Hadoop 目錄中 (/usr/lib/hadoop/lib)。然后重新啟動 Hadoop,以確保 Hadoop 已經(jīng)正確識別出該庫。

  接下來,將您的代碼編譯到一個目錄中: $ javac -classpath ${HADOOP_HOME}/hadoop-${HADOOP_VERSION}-core.jar:./google-gson-2.2.1/gson-2.2.1.jar -d wordcount_classes WordCount.java 。

  現(xiàn)在為您的庫創(chuàng)建一個 jar 文件: $ jar -cvf wordcount.jar -C wordcount_classes/。

  完成此過程后,您可以將一些文本文件復(fù)制到某個目錄中,然后使用此 jar 文件將這些文本文件處理為許多獨立的單詞,創(chuàng)建一條 JSON 記錄來包含每個單詞和計數(shù)。例如,要在一些 Project Gutenberg 文本上處理此數(shù)據(jù): $ hadoop jar wordcount.jar org.mcslp.WordCount /user/mc/gutenberg /user/mc/gutenberg-output。

  這將在我們的目錄中生成已由 Hadoop 內(nèi)的 MapReduce 函數(shù)統(tǒng)計的單詞列表。

  將數(shù)據(jù)從 Hadoop 導(dǎo)出到 Couchbase Server

  要從 Hadoop 取回數(shù)據(jù)并導(dǎo)入 Couchbase Server 中,則需要使用 Sqoop 導(dǎo)出該數(shù)據(jù): $ sqoop export --connect http://10.2.1.55:8091/pools --table ignored --export-dir gutenberg-output。

  此示例中忽略了 --table 參數(shù),但 --export-dir 是要導(dǎo)出的信息所在的目錄的名稱。#p#

 

  在 Couchbase Server 中編寫 MapReduce

  在 Hadoop 中,MapReduce 函數(shù)是使用 Java 編寫的。在 Couchbase Server 中,MapReduce 函數(shù)是使用 Javascript 編寫的。作為一種已解釋的語言,這意味著您不需要編譯視圖,它會支持您編輯和細(xì)化 MapReduce 結(jié)構(gòu)。

  要在 Couchbase Server 中創(chuàng)建一個視圖,請打開管理控制臺(在 http://localhost:8091 上),然后單擊 View 按鈕。視圖收集在一個設(shè)計文檔中。您可以在單個設(shè)計文檔中創(chuàng)建多個視圖,也可以創(chuàng)建多個設(shè)計文檔。要提升服務(wù)器的總體性能,系統(tǒng)還支持一種可編輯的開發(fā)視圖以及一個無法編輯的生產(chǎn)視圖。生產(chǎn)視圖無法編輯是因為這么做會使視圖索引無效,并會導(dǎo)致需要重新構(gòu)建索引。

  單擊 Create Development View 按鈕并命名您的設(shè)計文檔和視圖。

  在 Couchbase Server 內(nèi),有兩個相同的函數(shù):map 和 reduce。map 函數(shù)用于將輸入數(shù)據(jù)(JSON 文檔)映射到某個表。然后使用 reduce 函數(shù)匯總和精減該表。reduce 函數(shù)是可選的,不是索引功能所必需的,所以,出于本文的目的,我們將忽略 reduce 函數(shù)。

  對于 map 函數(shù),函數(shù)的格式如 清單 6 所示。

  清單 6. map 函數(shù)的格式

  map(doc) {
  }

  參數(shù) doc 是每個存儲的 JSON 文檔。Couchbase Server 的存儲格式是一種 JSON 文檔,視圖是使用 Javascript 語言編寫的,所以我們可使用以下語句訪問 JSON 中一個名為 count 的字段:doc.count。

  要從 map 函數(shù)發(fā)出信息,可以調(diào)用 emit() 函數(shù)。emit() 函數(shù)接受兩個參數(shù),***個是鍵(用于選擇和查詢信息),第二個參數(shù)是相應(yīng)的值。因此,我們可以創(chuàng)建一個 map 函數(shù)來使用來輸出單詞和計數(shù),如 清單 7 中的代碼所示。

  清單 7. 輸出單詞和計數(shù)的 map 函數(shù)

  function (doc) {
  if (doc.word) {
  emit(doc.word,doc.count);
  }
 }

  這將為每個輸出文檔輸出一行數(shù)據(jù),其中包含文檔 ID(實際上是我們的單詞)、用作鍵的單詞和該單詞在源文本中出現(xiàn)的次數(shù)??稍?清單 8 中看到原始的 JSON 輸出。

  清單 8. 原始的 JSON 輸出

  {"total_rows":113,"rows":[
  {"id":"acceptance","key":"acceptance","value":2},
  {"id":"accompagner","key":"accompagner","value":1},
  {"id":"achieve","key":"achieve","value":1},
  {"id":"adulteration","key":"adulteration","value":1},
  {"id":"arsenic","key":"arsenic","value":2},
  {"id":"attainder","key":"attainder","value":1},
  {"id":"beerpull","key":"beerpull","value":2},
  {"id":"beware","key":"beware","value":5},
  {"id":"breeze","key":"breeze","value":2},
  {"id":"brighteyed","key":"brighteyed","value":1}
  ]
 }

  在輸出中,id 是文檔 ID,key 是您在 emit 語句中指定的鍵,value 是在 emit 語句中指定的值。

  獲取實時數(shù)據(jù)

  現(xiàn)在我們已在 Hadoop 中處理了信息,請將它導(dǎo)入 Couchbase Server 中,然后在 Couchbase Server 中為該數(shù)據(jù)創(chuàng)建了一個視圖,我們可以開始查詢已處理和存儲的信息了。視圖可使用一個 REST 樣式的 API 來訪問,或者在使用一個 Couchbase Server SDK 時,通過相應(yīng)的視圖查詢函數(shù)來訪問它。

  查詢可通過 3 種主要選擇來執(zhí)行:

  單獨的鍵。例如,顯示與某個特定鍵(比如 'unkind')匹配的信息。

  鍵列表。您可提供一個鍵值數(shù)組,這將返回其鍵值與一個提供的值匹配的所有記錄。例如,['unkind','kind'] 將返回與其中一個單詞匹配的記錄。

  鍵范圍。您可指定一個開始和結(jié)束鍵。

  例如,要找到一個指定的單詞的數(shù)量,可使用 key 參數(shù)進(jìn)行查詢:

  http://192.168.0.71:8092/words/_design/dev_words/_view/byword?connection_timeout=
  60000&limit=10&skip=0&key=%22breeze%22

  Couchbase Server 會很自然地采用 UTF-8 排序方式輸出一個 MapReduce 的按指定的鍵排序的結(jié)果。這意味著您可以通過指定開始值和結(jié)束值來獲取一個值范圍。例如,要獲取 'breeze' 與 'kind' 之間的所有單詞,可使用:

  http://192.168.0.71:8092/words/_design/dev_words/_view/byword?connection_timeout=
  60000&limit=10&skip=0&startkey=%22breeze%22&endkey=%22kind%22

  該查詢很簡單,但非常強(qiáng)大,尤其是在您認(rèn)識到可以將它與靈活的視圖系統(tǒng)結(jié)合使用,生成具有您想要的格式的數(shù)據(jù)的時候。

  結(jié)束語

  Hadoop 本身提供了一個強(qiáng)大的處理平臺,但沒有提供從已處理的數(shù)據(jù)中實際提取有用信息的方法。通過將 Hadoop 連接到另一個系統(tǒng),可使用該系統(tǒng)來查詢和提取信息。因為 Hadoop 使用 MapReduce 進(jìn)行相關(guān)處理,所以您可以通過 Couchbase Server 中的 MapReduce 系統(tǒng),利用 MapReduce 的知識來提供查詢平臺。使用此方法,您可以在 Hadoop 中處理數(shù)據(jù),以 JSON 文檔格式將數(shù)據(jù)從 Hadoop 導(dǎo)出到 Couchbase Server 中,然后在 Couchbase Server 中使用 MapReduce 查詢已處理的信息。

 

責(zé)任編輯:黃丹 來源: developerworks
相關(guān)推薦

2012-04-19 10:04:20

ibmdw

2023-05-26 17:21:15

PythonRust

2009-07-31 16:28:26

ibmdwJavaJSP

2015-09-17 11:04:07

KindleDropbox資料同步

2015-09-21 09:20:11

C#Couchbase使用

2021-03-27 10:54:34

Python函數(shù)代碼

2022-08-05 07:43:40

IoNT區(qū)塊鏈中心化

2015-04-17 16:44:22

swiftOC

2011-04-01 10:53:43

2011-01-19 14:39:59

Qmail技巧

2011-01-21 14:30:02

Thunderbird技巧

2019-03-25 10:30:19

開發(fā)技能代碼

2017-08-16 08:45:50

EVPNVXLAN網(wǎng)絡(luò)

2023-08-23 08:00:00

2011-07-08 17:49:38

WITH ASCTE

2011-12-15 01:01:16

ibmdw

2011-03-09 13:06:29

LimitMySQL

2010-01-07 17:41:19

JSON定義法

2009-08-06 17:15:34

C#開發(fā)和使用

2023-06-08 09:00:00

點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 国产精品黄 | 免费一区在线观看 | 国产视频一区在线 | 91精品国产一区二区三区动漫 | 九九99久久 | 亚洲小说图片 | 日韩视频一区 | 日韩视频一区在线观看 | 久久久夜色精品亚洲 | 亚洲精久久久 | 国产伦一区二区三区 | 久久男人 | 午夜视频在线 | 国产偷自视频区视频 | 午夜视频在线 | 日韩在线一区二区三区 | 精品伊人 | japanhd成人 | 欧美在线观看一区二区 | 免费久久网 | 国产中文字幕网 | 男女免费视频网站 | 人人做人人澡人人爽欧美 | 国产精品久久久久久久久 | 日韩a | 一区二区成人 | 国产福利资源在线 | 日日干日日操 | 欧美日韩亚洲一区 | 欧美精品国产精品 | 国产精品美女久久久久aⅴ国产馆 | 亚洲风情在线观看 | 亚洲国产精品成人久久久 | 综合九九 | 在线中文视频 | 中文字幕视频在线 | 久久久久国产一区二区三区不卡 | 国产免费一区二区三区最新6 | 欧美中文字幕一区 | 99成人在线视频 | 欧美午夜精品久久久久久浪潮 |