2017-02-28 7 views
8

파이프 라인에서 일부 자연 언어 처리 작업을 배열하기 위해 Spotify's Luigi을 사용하여 파이썬 3.6에서 첫 번째 프로젝트를 코딩했습니다.루이지에서 작업 사이에 파이썬 객체 전달하기?

Task 클래스의 output() 함수는 항상 어떤 종류의 파일 인 Target 개체를 로컬 또는 원격으로 반환하는 것으로 나타났습니다. My Tasks는 구문 분석 트리와 같은보다 복잡한 데이터 구조를 생성하기 때문에 문자열로 파일에 쓰고 다시 읽는 것은 매우 어렵습니다.

따라서 파이프 라인 내의 작업 사이에 파이썬 개체를 전달할 가능성이 있는지 묻고 싶습니다.

답변

7

짧은 답변 : 제

루이지 매개 변수가 날짜/날짜 객체, 문자열, INT 및 플로트로 제한됩니다. docs for reference을 참조하십시오.

즉, 복잡한 데이터 구조를 문자열 (json, msgpack, 원하는 모든 serializer를 사용하고 심지어 압축)을 문자열로 serialize하고 문자열 매개 변수로 전달해야 함을 의미합니다.

물론 사용자 정의 매개 변수 하위 클래스를 작성할 수도 있지만 기본적으로 serialize and parse methods을 구현해야합니다.

그러나 계산 된 데이터를 대상에 저장하는 대신 매개 변수를 사용하면 Luigi를 사용할 때 얻을 수있는 주요 장점 중 하나가 손실됩니다. 트리의 부모 작업이 지정한 재시도 횟수 이상으로 실패하면 복잡한 데이터 구조를 다시 계산하는 작업을 실행해야합니다. 작업이 복잡한 데이터를 계산하거나 상당한 시간이 걸리거나 많은 리소스를 소비하는 경우 값 비싼 계산을 다시 수행하지 않아도되도록 출력을 대상으로 저장해야합니다.

다음을 살펴보면 다른 작업에도 해당 데이터가 필요할 수 있습니다. 왜 저장하지 않으시겠습니까? 또한

는, 목표는 파일이 아닌 것을 알 수 : http://luigi.readthedocs.io/en/stable/api/luigi.contrib.html#submodules

+0

고마워 : 데이터베이스 테이블, 레디 스, 하둡, 탄성 검색 인덱스, 그리고 더 많은에 데이터를 저장할 수 있습니다! + 대답. – Kaleidophon