用于并行或xargs的一组mapreduce高阶函数
shmr的Python项目详细描述
一组高阶map-reduce函数
目录
简介
这个库的目标是使并行处理大数据变得更容易,同时不需要花费大量的时间编写代码。这个库的典型工作流程是将一个巨大的文件分割成更小的分区,并像mapreduce框架一样并行地处理每个分区。但是,除了一个简单的pip
安装命令外,它不需要任何Spark或Hadoop设置。如果你想快速(而且只做一次)的话,这更合适。在
用法
这个库shmr
,最好与^{
$ python -m shmr -h usage: sh map-reduce (1.0.18)[-h][-v] -i INFILE [--skip_nrows SKIP_NROWS][-d DESER_FN][-s SER_FN] <command> ... optional arguments: -h, --help show this help message and exit -v, --verbose -i INFILE, --infile INFILE the path to one partition or list of partitions depend on the sub-program --skip_nrows SKIP_NROWS Skip first n rows of each partition -d DESER_FN, --deser_fn DESER_FN Deserialization function. Default is `orjson.loads` -s SER_FN, --ser_fn SER_FN Serialization function. Default is `orjson.dumps`
最重要的参数是位置参数<command>
,它是您要运行的运算符。有两种类型的运算符:应用于一个分区的运算符以partition.*
开头,另一种应用于所有分区的运算符以partitions.*
开头。上面的help命令将向您显示所有可能的命令,为了便于阅读,这些命令被截断。也可以使用“帮助”获取命令的详细信息。例如:
自动分区命名
在命名输出分区时可以使用一些变量:
{stem}
:将被当前映射分区的干替换{auto}
:新分区的增量*
或{}
:特殊的占位符是{stem}
或{},这取决于您使用的函数。如果函数生成多个分区(例如, group_by
函数),则*
或{}将被 {auto}
替换,否则,它将被{stem}
替换。请注意,多个分区的{stem}
将始终被空字符串替换
安装
来自PyPi:pip install shmr
示例
以下是一些例子:
- 将一个文件(分区)拆分为多个文件(分区)
shmr -i <file_path> partitions.coalesce --outfile <output_files> --num_partitions=128
- 并行应用映射函数
ls <input_files> | xargs -n 1 -I{} -P <n_threads> shmr -i {} partition.map --fn <func> --outfile <output_file>
如果您提供-v
,它将显示进度条,告诉您处理一个分区需要多长时间。在
- 项目
标签: