Haowei Yu created ARROW-6776:
--------------------------------

             Summary: [Python] Need a lite version of pyarrow
                 Key: ARROW-6776
                 URL: https://issues.apache.org/jira/browse/ARROW-6776
             Project: Apache Arrow
          Issue Type: Improvement
          Components: Python
    Affects Versions: 0.14.1
            Reporter: Haowei Yu


Currently I am building a library packages on top of pyarrow, so I include 
pyarrow as a dependency and ship it to our customer. However, when our customer 
installed our packages, it will also install pyarrow and pyarrow's dependency 
(numpy). However the dependency size is huge. 
{code:bash}
(py36env) [hyu@c6x64-hyu-newuser-final-clone connector]$ ls -l --block-size=M 
/home/hyu/py36env/lib/python3.6/site-packages/pyarrow/ 
total 186M
{code}
 And numpy is around 80MB. Total is more than 250 MB.

Our customer want to bundle all dependency and run the code inside AWS Lambda, 
however they hit the size limit and failed to run the code.

Looking into the pyarrow, I saw multiple .so files are shipped both with and 
without version suffix, I wonder if you can remove the one of them (either with 
or without suffix), it will at least reduce the package size by half.

Further, our library just want to use IPC and read data as record batch, I 
don't need arrow flight at all (which is the biggest .so file and takes around 
100 MB). I wonder if you can push a lite version of the pyarrow so that I can 
specify lite version as the dependency. Or maybe I need to build my own lite 
version and push it pypi. However, this approach cause further problem if our 
customer is using the "fat" version of pyarrow unless you the change the 
namespace of lite version of pyarrow.

Another alternative is that I bundle the pyarrow with our library ( copy the 
whole directory into vendored namespace) and ship it to our customer without 
specifying pyarrow as a dependency. The advantage of this one is that I can 
build pyarrow with whatever option/sub-module/libraries I need. However, I 
tried a lot but failed because pyarrow use absolute import and it will fail to 
import the script in the new location. 

Any insight how I should resolve this issue?

 

 

 

 



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to