gpt4 book ai didi

python - 使用 Python map reduce 进行 Avro 数据序列化

转载 作者:可可西里 更新时间:2023-11-01 16:12:20 25 4
gpt4 key购买 nike

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

这里的任何人都对此进行过研究,或者任何建议都会有很大帮助。

提前致谢。

最佳答案

你可以用 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)

运行应用程序:

export STATS_SCHEMA=$(cat stats.avsc)
pydoop submit \
-D pydoop.mapreduce.avro.value.output.schema="${STATS_SCHEMA}" \
--avro-input v --avro-output v \
--upload-file-to-cache color_count.py --mrv2 \
color_count input output

参见 Pydoop Avro docs了解详情。

关于python - 使用 Python map reduce 进行 Avro 数据序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28471474/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com