用于并行或xargs的一组mapreduce高阶函数

shmr的Python项目详细描述


一组高阶map-reduce函数

PyPIPythonGitHub IssuesContributions welcomeLicense

目录

简介

这个库的目标是使并行处理大数据变得更容易,同时不需要花费大量的时间编写代码。这个库的典型工作流程是将一个巨大的文件分割成更小的分区,并像mapreduce框架一样并行地处理每个分区。但是,除了一个简单的pip安装命令外,它不需要任何Spark或Hadoop设置。如果你想快速(而且只做一次)的话,这更合适。在

用法

这个库shmr,最好与^{}或{a7}一起在命令行中使用。通过打印“帮助”,可以查看支持的参数列表:

$ 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命令将向您显示所有可能的命令,为了便于阅读,这些命令被截断。也可以使用“帮助”获取命令的详细信息。例如:

^{pr2}$

自动分区命名

在命名输出分区时可以使用一些变量:

  1. {stem}:将被当前映射分区的干替换
  2. {auto}:新分区的增量
  3. *{}:特殊的占位符是{stem}或{},这取决于您使用的函数。如果函数生成多个分区(例如,group_by函数),则*或{}将被{auto}替换,否则,它将被{stem}替换。请注意,多个分区的{stem}将始终被空字符串替换

安装

来自PyPi:pip install shmr

示例

以下是一些例子:

  1. 将一个文件(分区)拆分为多个文件(分区)
shmr -i <file_path> partitions.coalesce --outfile <output_files> --num_partitions=128
  1. 并行应用映射函数
ls <input_files> | xargs -n 1 -I{} -P <n_threads> shmr -i {} partition.map --fn <func> --outfile <output_file>

如果您提供-v,它将显示进度条,告诉您处理一个分区需要多长时间。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
来自偏移量的java JavaPairInputStream流   gzip Java TarInputStream读取tar的文件名。包含另一个tar的gz文件。gz文件   如何在Linux shell脚本中确定和使用实际的java路径   java请求太多FirebaseError   java错误json解析   java在localserver上发送安卓应用程序的输出   JavaSpring:启动和停止webapplication时更新DBtable条目   java如何使用JavaFX在矩形处设置文本?   java SQL查询在Hibernate中出现异常   java我无法使用javamail代码通过outlook(hotmail帐户)配置发送邮件,但在gmail中工作正常   java是不同的持久性。测试运行/JPA装置的xml属性   无头Eclipse的java导出战   使用ContentVersionStrategy的java Spring引导缓存禁止使用gzip进行资源压缩   java如何获取计算机的设备令牌?   图像文件的java ImageInfo不包含有效值   继承强制在Java中使用基类方法