Apache Airflow

独家 | 10个数据科学家常犯的编程错误(附解决方案)

不羁岁月 提交于 2019-11-29 00:25:16
简介: 本文为资深数据科学家常见的10个错误提供解决方案。 数据科学家是“比软件工程师更擅长统计学,比统计学家更擅长软件工程的人”。许多数据科学家都具有统计学背景,但是在软件工程方面的经验甚少。我是一名资深数据科学家,在Stackoverflow的python编程方面排名前1%,并与许多(初级)数据科学家共事。以下是我经常看到的10大常见错误,本文将为你相关解决方案: 不共享代码中引用的数据 对无法访问的路径进行硬编码 将代码与数据混合 在Git中和源码一起提交数据 编写函数而不是DAG 写for循环 不编写单元测试 不写代码说明文档 将数据保存为csv或pickle文件 使用jupyter notebook 1. 不共享代码中引用的数据 数据科学需要代码和数据。因此,为了让别人可以复现你的结果,他们需要能够访问到数据。道理很简单,但是很多人忘记分享他们代码中的数据。 import pandas as pd df1 = pd.read_csv('file-i-dont-have.csv') # fails do_stuff(df) 解决方案:使用d6tpipe( https://github.com/d6t/ d6tpipe)来共享你的代码中的数据文件、将其上传到S3/web/google驱动等,或者保存到数据库,以便于别人可以检索到文件(但是不要将其添加到git,原因见下文)。

独家 | 10个数据科学家常犯的编程错误(附解决方案)

僤鯓⒐⒋嵵緔 提交于 2019-11-29 00:22:07
数据科学家是“比软件工程师更擅长统计学,比统计学家更擅长软件工程的人”。许多数据科学家都具有统计学背景,但是在软件工程方面的经验甚少。我是一名资深数据科学家,在Stackoverflow的python编程方面排名前1%,并与许多(初级)数据科学家共事。以下是我经常看到的10大常见错误,本文将为你相关解决方案: 不共享代码中引用的数据 对无法访问的路径进行硬编码 将代码与数据混合 在Git中和源码一起提交数据 编写函数而不是DAG 写for循环 不编写单元测试 不写代码说明文档 将数据保存为csv或pickle文件 使用jupyter notebook 1. 不共享代码中引用的数据 数据科学需要代码和数据。因此,为了让别人可以复现你的结果,他们需要能够访问到数据。道理很简单,但是很多人忘记分享他们代码中的数据。 import pandas as pd df1 = pd.read_csv('file-i-dont-have.csv') # fails do_stuff(df) 解决方案:使用d6tpipe( https://github.com/d6t/ d6tpipe)来共享你的代码中的数据文件、将其上传到S3/web/google驱动等,或者保存到数据库,以便于别人可以检索到文件(但是不要将其添加到git,原因见下文)。 2. 对无法访问的路径进行硬编码 与错误1相似

分布式airflow下的日志中文乱码问题

自闭症网瘾萝莉.ら 提交于 2019-11-25 16:55:13
[toc] 分布式airflow下的日志中文乱码问题 背景 我们的airflow部署方式为分布式的,在主节点上部署了webserver,worker节点部署了worker和日志服务器,并没有将日志写入远程服务器,所以任务的日志是直接写本地磁盘并通过日志服务器传输给webserver进行展示的。在某一次的作业日志查看中发现出现了中文乱码问题。 排查过程 首先查看日志文件的编码格式,发现确实是utf-8格式 查看日志内文件内容发现中文显示正常(当时以为见了鬼了) 通过浏览器观察webserver发送的获取日志的请求,发现请求路径为 http://slave1:8793/log/dag_name/task_name/datetime,通过该路径去查看airflow源码,发现cli.py这个文件中一段代码 @flask_app.route('/log/<path:filename>') def serve_logs(filename): # noqa log = os.path.expanduser(conf.get('core', 'BASE_LOG_FOLDER')) return flask.send_from_directory( log, filename, mimetype="application/json", as_attachment=False) WORKER_LOG