使用Python map redu的Avro数据序列化

2024-06-26 10:57:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我有avro数据存在于hdfs文件系统中。我想用pythonmap reduce读取这些avro数据。我知道如果我必须使用java,那么我们可以使用AvroMapper和AvroReducer,但是使用python我不太确定。在

或者这里的任何人对此都有帮助。在

提前谢谢。在


Tags: 数据reducehdfsjavaavropythonmapavromapperavroreducer
1条回答
网友
1楼 · 发布于 2024-06-26 10:57:42

您可以使用Pydoop>;=1.0.0-rc2完成此操作。下面是颜色计数示例的外观:

from collections import Counter

import pydoop.mapreduce.api as api
import pydoop.mapreduce.pipes as pp
from pydoop.avrolib import AvroContext

class Mapper(api.Mapper):

    def map(self, ctx):
        user = ctx.value
        color = user['favorite_color']
        if color is not None:
            ctx.emit(user['office'], Counter({color: 1}))

class Reducer(api.Reducer):

    def reduce(self, ctx):
        s = sum(ctx.values, Counter())
        ctx.emit('', {'office': ctx.key, 'counts': s})

def __main__():
    factory = pp.Factory(mapper_class=Mapper, reducer_class=Reducer)
    pp.run_task(factory, private_encoding=True, context_class=AvroContext)

要运行应用程序:

^{pr2}$

有关详细信息,请参阅Pydoop Avro docs。在

相关问题 更多 >