0

我有一个系统通过两个步骤将数据从 Twi tter 的 Streaming API 上传到 MySQL 数据库:

1)我每天通过从streamR改编的代码将数据从R传入两个单独的文件,一个AM文件和PM文件。

2) 一天两次,我在 R 中解析和组织数据,然后使用 RMySQL 上传到 MySQL 数据库。

MySQL 中显示的数据存在滞后 - 2-3 天,而且这种滞后似乎在不断增加。RMySQL 上传后返回“DONE”,但数据要到几天后才能查询。我的合作者以实时分析推文数据而自豪,所以这很麻烦。

解析/上传代码:

 library(streamR)
    tweets<-parseTweets("parse/after12.json")

    #clean data so that mysql doesnt freak

    cleanText <- function(text_vector){
      text_vector<-sapply(text_vector, function(x) gsub("\'","\"",x))
      text_vector<-sapply(text_vector, function(x) gsub("[\b\t\n]"," ",x))
      return(text_vector)       
    }

    tweets[,1:length(tweets)]<-cleanText(tweets[,1:length(tweets)])

    #change date data to a format mysql can read
    tweets$created_at<-as.POSIXlt(tweets$created_at,  format= "%a %b %d %X %z %Y",tz="UTC")

library(chron)
library(RMySQL)

# Establish connection to database
mgr <- dbDriver("MySQL")
mycon <- dbConnect(mgr, user="user", host="name", dbname="dbname", password="pwd")

currentTime<-Sys.time()
currentDate<-unlist(lapply(strsplit(as.character(currentTime), " "), function(x) x[1]))
currentDate<-unlist(lapply(strsplit(as.character(currentDate), "-"), function(x) x[1:3]))


tableDate<-paste(currentDate[1], currentDate[2], sep="_") # to load into

dbWriteTable(mycon, paste("data_", tableDate, sep=""), tweets1, row.names=FALSE, append=T)

#upload complete

也不是说当这种滞后发生时,没有迹象表明一个进程正在保存 mysql 数据库的机器上运行。

任何建议,将不胜感激!

4

0 回答 0