python - 从 Python 3 和 Avro 1.7.6 开始,步骤是什么? (问答)

标签 python apache python-3.x schema avro

这是一个问答,这意味着我正在分享我对我遇到的问题的解决方案/答案:

问题是 getting started guide来自 apache 站点的并不完全是最新的,经过一些摆弄之后,我设法让示例工作。

  1. 首先从 here 获取最新版本
  2. 转到 lang 下的 py3 子文件夹并通过 python 3 构建项目(阅读更多 here )
  3. 在 python 代码所在的同一文件夹中创建 user.avsc。

    架构:

     {
    
      "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. 根据下面提供的代码创建 .py(请注意,我必须对 here 中的代码进行少量更改才能使其正常工作)。

    修改后的代码如下。

    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()
    

最佳答案

  1. 首先从 here 获取最新版本
  2. 转到 lang 下的 py3 子文件夹并通过 python 3 构建项目(阅读更多 here )
  3. 在 python 代码所在的同一文件夹中创建 user.avsc。

    架构:

     {
    
      "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. 根据下面提供的代码创建 .py(请注意,我必须对 here 中的代码进行少量更改才能使其正常工作)。

    修改后的代码如下。

    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()
    

关于python - 从 Python 3 和 Avro 1.7.6 开始,步骤是什么? (问答),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21878755/

相关文章:

Python 使用全局 vs 指定模块

python - 在 Python 3 中使用套接字获取 400 Bad Request 错误

python - 在 matplotlib 中更改字体

apache - 使用 .htaccess 附加参数

php - mysql_connect() 错误信息

python - Pycrypto aes 256 初始化向量大小

python - 上下文管理器处理路径的类型提示

html - CSS 在 apache2 服务器上的 Flask 应用程序中不起作用

python - 如何合并数值和嵌入序列模型以处理 RNN 中的类别

python - 如何通过Python向Mongo对象中插入数据