예제 #1
0
 /** Get the number of hashtag occurrences in the given time bucket. */
 protected long getTagTimeCount(String hashtag, BucketType timeBucketType, DateTime dateTime)
     throws IOException, InterruptedException {
   Optional<LongOp> optCount =
       dataCubeIo.get(
           new ReadBuilder(dataCube)
               .at(tagsDimension, hashtag)
               .at(timeDimension, timeBucketType, dateTime));
   return unpackOrZero(optCount);
 }
예제 #2
0
 /** Get the number of times that retweeterUser retweeted a tweet by sourceUser. */
 public long getRetweetsOfBy(String sourceUser, String retweeterUser)
     throws IOException, InterruptedException {
   Optional<LongOp> optCount =
       dataCubeIo.get(
           new ReadBuilder(dataCube)
               .at(retweetedFromDimension, sourceUser)
               .at(userDimension, retweeterUser));
   return unpackOrZero(optCount);
 }
예제 #3
0
 /** Get the number of tweets sent by the given user on the given day. */
 public long getUserDayCount(String userName, DateTime day)
     throws InterruptedException, IOException {
   Optional<LongOp> optCount =
       dataCubeIo.get(
           new ReadBuilder(dataCube)
               .at(userDimension, userName)
               .at(timeDimension, HourDayMonthBucketer.days, day));
   return unpackOrZero(optCount);
 }
예제 #4
0
  /**
   * Do all the increments necessary to add a tweet to the datacube. May not immediately flush to
   * the DB.
   */
  public void countTweet(Tweet tweet) throws IOException, InterruptedException, AsyncException {
    WriteBuilder writeBuilder =
        new WriteBuilder(dataCube)
            .at(timeDimension, tweet.time)
            .at(userDimension, tweet.username)
            .at(retweetedFromDimension, tweet.retweetedFrom.or(""))
            .at(tagsDimension, tweet.hashTags);
    Batch<LongOp> cubeUpdates = dataCube.getWrites(writeBuilder, new LongOp(1));

    dataCubeIo.writeAsync(cubeUpdates);
  }
예제 #5
0
 /** Write all batched/cached changes to the backing database. */
 public void flush() throws InterruptedException {
   dataCubeIo.flush();
 }
예제 #6
0
 /** Get the number of tweets that included the given hashtag. */
 public long getTagCount(String hashtag) throws IOException, InterruptedException {
   Optional<LongOp> optCount =
       dataCubeIo.get(new ReadBuilder(dataCube).at(tagsDimension, hashtag));
   return unpackOrZero(optCount);
 }
예제 #7
0
 /** Get the total number of tweets sent by the given user. */
 public long getUserCount(String userName) throws InterruptedException, IOException {
   Optional<LongOp> optCount =
       dataCubeIo.get(new ReadBuilder(dataCube).at(userDimension, userName));
   return unpackOrZero(optCount);
 }
예제 #8
0
 /** Get the total number of tweets. */
 public long getCount() throws InterruptedException, IOException {
   return dataCubeIo.get(new ReadBuilder(dataCube)).or(new LongOp(0)).getLong();
 }