2014-02-19 23 views
2

這是問答& A,這意味着我分享我的解決方案/回答我面臨一個問題:從Python 3和Avro 1.7.6開始,步驟是什麼? (Q&A)

的問題是,從Apache網站getting started guide並非完全向上-to-日期經過一番小小的調整,我設法讓樣本起作用。

  1. 首先wget的從here
  2. 轉到郎下的子文件夾PY 3的最新版本,並通過你的Python 3構建項目(閱讀更多here
  3. 在同一文件夾中創建user.avsc python代碼將被定位。

    的模式:

    { 
    
        "namespace": "example.avro", 
        "type": "record", 
        "name": "User", 
        "fields": [ 
         {"name": "name", "type": "string"}, 
         {"name": "favorite_number", "type": ["int", "null"]}, 
         {"name": "favorite_color", "type": ["string", "null"]} 
        ] 
    } 
    
  4. 創建從下面提供的代碼(記住,我不得不做出here的代碼小的改動,以得到這個工作)的的.py。

    修改後的代碼如下。

    import avro.schema 
    from avro.datafile import DataFileReader, DataFileWriter 
    from avro.io import DatumReader, DatumWriter 
    
    schema = avro.schema.Parse(open("user.avsc").read()) 
    
    writer = DataFileWriter(open("users.avro", "wb"), DatumWriter(), schema) 
    writer.append({"name": "Alyssa", "favorite_number": 256}) 
    writer.append({"name": "Ben", "favorite_number": 7, "favorite_color": "red"}) 
    writer.close() 
    
    reader = DataFileReader(open("users.avro", "rb"), DatumReader()) 
    for user in reader: 
        print(user) 
    
    reader.close() 
    
+0

代碼示例有錯字。應該是進口avro.schema不進口進口avro.schma –

回答

3
  1. 首先wget的從here
  2. 轉到郎下的子文件夾PY3通過你的Python 3的最新版本,並建立工程(閱讀更多here
  3. 創建user.avsc與python代碼將位於同一個文件夾中。

    的模式:

    { 
    
        "namespace": "example.avro", 
        "type": "record", 
        "name": "User", 
        "fields": [ 
         {"name": "name", "type": "string"}, 
         {"name": "favorite_number", "type": ["int", "null"]}, 
         {"name": "favorite_color", "type": ["string", "null"]} 
        ] 
    } 
    
  4. 創建從下面提供的代碼(記住,我不得不做出here的代碼小的改動,以得到這個工作)的的.py。

    修改後的代碼如下。

    import avro.schema 
    from avro.datafile import DataFileReader, DataFileWriter 
    from avro.io import DatumReader, DatumWriter 
    
    schema = avro.schema.Parse(open("user.avsc").read()) 
    
    writer = DataFileWriter(open("users.avro", "wb"), DatumWriter(), schema) 
    writer.append({"name": "Alyssa", "favorite_number": 256}) 
    writer.append({"name": "Ben", "favorite_number": 7, "favorite_color": "red"}) 
    writer.close() 
    
    reader = DataFileReader(open("users.avro", "rb"), DatumReader()) 
    for user in reader: 
        print(user) 
    
    reader.close() 
    
+0

你錯過了「e」在avro.schema。 – Pirson

+0

感謝您的修復。 :) – AmirHd

相關問題