apache / arrow-cookbook

Apache Arrow Cookbook
https://arrow.apache.org/
Apache License 2.0
96 stars 47 forks source link

[C++] Add example of writing a user-defined compute kernel #174

Open wjones127 opened 2 years ago

drin commented 2 years ago

I have something that I think would work as an initial pass for this. I have a recipe here:

https://github.com/drin/cookbooks/tree/mainline/arrow/add-compute-fn

What would be the best way to move the recipe into this repo to submit a PR? I formatted the directory to be self-contained, but looking at other recipes in this repo, it seems like it's preferred to keep code mostly self-contained within a single source file.

Is there a preference on how to clearly distinguish what is necessary in the header file?

After some suggestions I can prepare an initial PR.

wjones127 commented 2 years ago

I think the cookbook approach is to just show the minimal necessary code within the source file, and not necessarily show how one might separate declarations into headers.

Personally, I think it would be helpful to have two examples:

  1. In the cookbook, just show the minimal source code necessary in one file to write, register, and call a compute kernel.
  2. In a separate repo, show a full project structure for writing compute kernels in a C++ project. Bonus points if it shows how to make Python bindings that can register with PyArrow's compute registry (and similarly with the R package and others).
drin commented 2 years ago

Thanks! (1) sounds easily doable. For (2), I guess the repo where I have it now (drin/cookbooks.git) is a reasonable place to keep it. I'll try to expand with python bindings. I'll see about how to do R bindings in the near-ish future.

drin commented 2 years ago

Created a draft PR: https://github.com/apache/arrow-cookbook/pull/227

drin commented 2 years ago

decided to just mark it ready for review. not sure there's any need to keep it as a draft