2015-12-08 57 views
0

继这个好之后blog post我找到了github repo他的代码,我cloned它让它很容易为别人工作。无法序列化类org.apache.hadoop.io.DoubleWritable - MongoDB Hadoop连接器+火花+ Python

我创建了一个script到:

  1. 下载和构建spark
  2. 下载,应用补丁并生成mongodb hadoop connector
  3. 下载mongodb java driver v3.1.1 jar
  4. 把最低限度的必要罐子一起
  5. 下载sample file
  6. 导入到一个MongoDB的集合
  7. 安装一个必要的Python库pytz

它准备的一切准备好运行。

python script基本上是这样的:

config = {"mongo.input.uri": "mongodb://localhost:27017/marketdata.minbars"} 
inputFormatClassName = "com.mongodb.hadoop.MongoInputFormat" 
keyClassName = "org.apache.hadoop.io.Text" 
valueClassName = "org.apache.hadoop.io.MapWritable" 

minBarRawRDD = sc.newAPIHadoopRDD(inputFormatClassName, keyClassName, valueClassName, None, None, config) 
minBarRDD = minBarRawRDD.values() 

import calendar, time, math 
dateFormatString = '%Y-%m-%d %H:%M'  
groupedBars = minBarRDD.sortBy(lambda doc: str(doc["Timestamp"])).groupBy(lambda doc: 
    (doc["Symbol"], math.floor(calendar.timegm(time.strptime(doc["Timestamp"], dateFormatString))/(5*60)))) 

def ohlc(grouping): 
    # some 

config["mongo.output.uri"] = "mongodb://localhost:27017/marketdata.fiveminutebars" 
outputFormatClassName = "com.mongodb.hadoop.MongoOutputFormat" 
# resultRDD.saveAsNewAPIHadoopFile("file:///placeholder", outputFormatClassName, None, None, None, None, config) 

随着最后一行注释的,当我运行spark-ohlcbars-example.submit.sh脚本一切顺利完美,没有任何错误。

但是,一旦我取消在奥德最后一行尝试将数据备份保存到MongoDB的异常升高

Can't serialize class org.apache.hadoop.io.DoubleWritable 

我想用Python> Java的转换过程> MongoDB的格式,它丢失时它会尝试序列化并且不起作用。

你可以看到在git repository

issue我希望社会各界对我们解决这个问题的一种方式。你们知道如何解决这个问题吗?

回答