2015-12-08 47 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我希望社會各界對我們解決這個問題的一種方式。你們知道如何解決這個問題嗎?

回答