9 hours agoARROW-2012: [GLib] Support "make distclean" master
Kouhei Sutou [Sun, 21 Jan 2018 13:10:34 +0000 (22:10 +0900)] 
ARROW-2012: [GLib] Support "make distclean"

Author: Kouhei Sutou <>

Closes #1494 from kou/glib-support-distclean and squashes the following commits:

d660e0f8 [Kouhei Sutou] [GLib] Support "make distclean"

23 hours ago[Python] Fix small typos in bytes, String/UTF-8 and FixedSizeBinary type check except...
Simbarashe Nyatsanga [Sat, 20 Jan 2018 23:12:07 +0000 (01:12 +0200)] 
[Python] Fix small typos in bytes, String/UTF-8 and FixedSizeBinary type check exceptions. (#1495)

24 hours agoARROW-2000: [Plasma] Deduplicate file descriptors when replying to GetRequest.
Robert Nishihara [Sat, 20 Jan 2018 21:41:23 +0000 (13:41 -0800)] 
ARROW-2000: [Plasma] Deduplicate file descriptors when replying to GetRequest.

Author: Robert Nishihara <>

Closes #1479 from robertnishihara/deduplicatefiledescriptors and squashes the following commits:

9be9643 [Robert Nishihara] Fix bug.
8a827cf [Robert Nishihara] Remove mmap_size from PlasmaObject.
ab30d7d [Robert Nishihara] Fix tests.
2916e87 [Robert Nishihara] Remove mmap_size from PlasmaObjectSpec, and file_descriptor -> fd.
7f5c618 [Robert Nishihara] Deduplicate file descriptors when store replies to Get.
ab12d63 [Robert Nishihara] Make Create return a MutableBuffer.

47 hours agoARROW-2011: [Python] Allow setting the pickler in the serialization context.
Robert Nishihara [Fri, 19 Jan 2018 22:49:17 +0000 (14:49 -0800)] 
ARROW-2011: [Python] Allow setting the pickler in the serialization context.

Author: Robert Nishihara <>

Closes #1493 from robertnishihara/cloudpickle and squashes the following commits:

57fb46f [Robert Nishihara] Fix test (it didn't work without cloudpickle).
a884bb4 [Robert Nishihara] Add test.
14e1536 [Robert Nishihara] Allow setting the pickler in the serialization context.

2 days agoARROW-1930: [C++] Adds Slice operation to ChunkedArray and Column
Adam Seibert [Fri, 19 Jan 2018 20:41:43 +0000 (15:41 -0500)] 
ARROW-1930: [C++] Adds Slice operation to ChunkedArray and Column

Replicates `Slice` api from Array to ChunkedArray and Column.

Author: Adam Seibert <>
Author: Wes McKinney <>

Closes #1491 from seibs/ARROW-1930 and squashes the following commits:

1f03793b [Wes McKinney] Tweak doxygen comments
d920d80c [Adam Seibert] ARROW-1930: [C++] Adds Slice operation to ChunkedArray and Column

2 days agoARROW-1872: [Website] Minor edits and addition of YAML for versions
Justin Dunham [Fri, 19 Jan 2018 17:49:13 +0000 (12:49 -0500)] 
ARROW-1872: [Website] Minor edits and addition of YAML for versions

Hi, in this version I've:

* Added a YAML file for tracking versions and outputting related links etc.
* Done some minor cleanup on HTML and images
* Added a small paragraph about what Arrow is to the front page

Author: Justin Dunham <>

Closes #1483 from riboflavin/master and squashes the following commits:

9ffb5263 [Justin Dunham] fix responsive layout
fece5578 [Justin Dunham] update front page description
6174a5fb [Justin Dunham] small image cleanups
173ead2c [Justin Dunham] slight improvements to mobile and html layout
fe9007d5 [Justin Dunham] add version vars, small amount of copy, and clean up formatting slightly

2 days agoARROW-2005: [Python] Fix incorrect flake8 config path to Cython lint config
Wes McKinney [Fri, 19 Jan 2018 17:46:40 +0000 (12:46 -0500)] 
ARROW-2005: [Python] Fix incorrect flake8 config path to Cython lint config

This was silently passing even though the config file was not found. This first build should fail, then I will fix the flakes

Author: Wes McKinney <>

Closes #1488 from wesm/ARROW-2005 and squashes the following commits:

4305e1d1 [Wes McKinney] Fix Cython flakes
894d4ab3 [Wes McKinney] Fix incorrect flake8 config path to Cython lint config

3 days agoARROW-1966: [C++] Accommodate JAVA_HOME on Linux that includes the jre/ directory...
Wes McKinney [Thu, 18 Jan 2018 16:01:23 +0000 (11:01 -0500)] 
ARROW-1966: [C++] Accommodate JAVA_HOME on Linux that includes the jre/ directory, or is the full path to directory with libjvm

Some users ran into a rough edge where they had a non-standard JRE directory (possibly related to some recent changes by Oracle in their JDK installer)

Author: Wes McKinney <>

Closes #1487 from wesm/ARROW-1966 and squashes the following commits:

7e14923d [Wes McKinney] Add note to API documentation about JAVA_HOME
f77b31e6 [Wes McKinney] Accommodate a JAVA_HOME containing the jre/ directory, or an absolute path to directory containing libjvm

3 days agoARROW-2004: [C++] Add shrink_to_fit parameter to BufferBuilder::Resize, add Reserve...
Wes McKinney [Thu, 18 Jan 2018 15:56:15 +0000 (10:56 -0500)] 
ARROW-2004: [C++] Add shrink_to_fit parameter to BufferBuilder::Resize, add Reserve method

I also relaxed the requirement to pass `const uint8_t*` so that one can pass `const void*` when writing to a `BufferBuilder`. This will not affect any downstream users

Author: Wes McKinney <>

Closes #1486 from wesm/ARROW-2004 and squashes the following commits:

2d6660a8 [Wes McKinney] Add shrink_to_fit parameter to BufferBuilder::Resize, add Reserve method, relax pointer type in Append

4 days agoARROW-1856: [Python] Auto-detect Parquet ABI version when using PARQUET_HOME
Korn, Uwe [Wed, 17 Jan 2018 19:50:09 +0000 (14:50 -0500)] 
ARROW-1856: [Python] Auto-detect Parquet ABI version when using PARQUET_HOME

Author: Korn, Uwe <>

Closes #1477 from xhochy/ARROW-1856 and squashes the following commits:

a34ade44 [Korn, Uwe] ARROW-1856: [Python] Auto-detect Parquet ABI version when using PARQUET_HOME

4 days agoARROW-2002: [Python] check write_queue is not full and writer_thread is alive before...
kmiku7 [Wed, 17 Jan 2018 17:26:31 +0000 (12:26 -0500)] 
ARROW-2002: [Python] check write_queue is not full and writer_thread is alive before enqueue new record when download file.

use pyarrow download file will raise queue.Full exceptions sometimes.

Author: kmiku7 <>

Closes #1485 from kmiku7/master and squashes the following commits:

8d5f905d [kmiku7] fix queue.FULL exception when writer thread write data slowly.
722182b8 [kmiku7] Merge pull request #1 from apache/master

4 days agoARROW-1991: [Website] Fix Docker documentation build
Wes McKinney [Wed, 17 Jan 2018 17:21:08 +0000 (12:21 -0500)] 
ARROW-1991: [Website] Fix Docker documentation build

@kou something is failing here, I'm not sure what's different here vs. Travis CI (not sure if this is what's failing the doc build):

  DOC   Building HTML
../arrow-glib-docs.xml:25: warning: failed to load external entity "../xml/gtkdocentities.ent"
Entity: line 1:
../arrow-glib-docs.xml:29: parser error : Entity 'package_name' not defined
    <title>&package_name; Reference Manual</title>
../arrow-glib-docs.xml:31: parser error : Entity 'package_string' not defined
      for &package_string;.
warning: failed to load external entity "../xml/basic-array.xml"
../arrow-glib-docs.xml:43: element include: XInclude error : could not load ../xml/basic-array.xml, and no fallback was found
warning: failed to load external entity "../xml/composite-array.xml"
../arrow-glib-docs.xml:44: element include: XInclude error : could not load ../xml/composite-array.xml, and no fallback was found
../xml/array-builder.xml:25: warning: failed to load external entity "../xml/xml/gtkdocentities.ent"

Author: Wes McKinney <>
Author: Kouhei Sutou <>

Closes #1472 from wesm/fix-gen-apidocs and squashes the following commits:

5b907acd [Wes McKinney] Add explicit instructions for uploading API docs to website
5734a651 [Wes McKinney] Use JDK7 for Java on Ubuntu 16.04
0fcb1e11 [Wes McKinney] Use gcc 4.9 rather than default gcc because of gcc5 ABI issues
dbf8be8e [Kouhei Sutou] Disable auto-reconfigure
b1b5050b [Kouhei Sutou] Fix GLib doc build
8b2d7e43 [Wes McKinney] Fixes for glib doc build
9da9e143 [Wes McKinney] Add BOOST_ROOT

9 days agoARROW-1979: [JS] Fix JS builds hanging in es2015
Paul Taylor [Thu, 11 Jan 2018 23:35:05 +0000 (18:35 -0500)] 
ARROW-1979: [JS] Fix JS builds hanging in es2015

Also fixes [ARROW-1903](

Author: Paul Taylor <>

Closes #1471 from trxcllnt/fix-js-es2015-builds and squashes the following commits:

62db3381 [Paul Taylor] update dependencies and add es6+ umd targets to jest transform ignore patterns to fix ci
6ff18e94 [Paul Taylor] ship es2015 commonJS in main package to avoid confusion
74e828af [Paul Taylor] fix typings issues (ARROW-1903)

10 days agoARROW-1971: [Python] Add pandas serialization to the default
devin-petersohn [Wed, 10 Jan 2018 23:47:45 +0000 (18:47 -0500)] 
ARROW-1971: [Python] Add pandas serialization to the default

Moving pandas register into default register.

Author: devin-petersohn <>

Closes #1462 from devin-petersohn/jira/1971_pandas_serialization and squashes the following commits:

b3dfd5b6 [devin-petersohn] Removing slower codepath
2ed31371 [devin-petersohn] Moving pandas register into default register

10 days agoARROW-1927: [Plasma] Add delete function
Jin Hai [Wed, 10 Jan 2018 23:32:11 +0000 (15:32 -0800)] 
ARROW-1927: [Plasma] Add delete function

Hi, I just add the delete function for Plasma and tested. JIRA ticked:

Author: Jin Hai <>
Author: Philipp Moritz <>

Closes #1427 from JinHai-CN/plasma-delete and squashes the following commits:

c6df5be [Philipp Moritz] rebase
424c1b7 [Philipp Moritz] fix linting
1d76437 [Philipp Moritz] fix tests
0ca115a [Jin Hai] Fixed two bugs according to the comments
ce27077 [Jin Hai] Update the unit test cases
8b6804e [Jin Hai] ARROW-1927: [Plasma] Try to fix unit-test fault
be88990 [Jin Hai] ARROW-1927: [Plasma] Add 3 test cases for delete function
baf82b9 [Jin Hai] ARROW-1927: [Plasma] Update according to the CI error
53e24eb [Jin Hai] ARROW-1927: [Plasma] Update according to the comments and CI error
c9984a4 [Jin Hai] ARROW-1927: [Plasma] Add delete function

11 days agoARROW-764: [C++] Improves performance of CopyBitmap and adds benchmarks
Adam Seibert [Wed, 10 Jan 2018 22:10:39 +0000 (17:10 -0500)] 
ARROW-764: [C++] Improves performance of CopyBitmap and adds benchmarks

I took a swing at improving the CopyBitmap performance (benchmarks below).  I'm a C/C++ novice, so I thought I'd get some feedback before I went too much further.

**Starting Point**
Run on (4 X 2208 MHz CPU s)
12/13/17 21:15:18
Benchmark                                        Time           CPU Iterations
BM_CopyBitmap/97.6563k/0/min_time:1.000       4779 us       4758 us        289   20.0445MB/s
BM_CopyBitmap/976.563k/0/min_time:1.000      47740 us      47476 us         26   20.0875MB/s
BM_CopyBitmap/97.6563k/4/min_time:1.000       4858 us       4866 us        289   19.5991MB/s
BM_CopyBitmap/976.563k/4/min_time:1.000      48117 us      47953 us         29   19.8879MB/s

**Using stanford bithacks for SetBitTo**
Run on (4 X 2208 MHz CPU s)
12/13/17 21:22:05
Benchmark                                        Time           CPU Iterations
BM_CopyBitmap/97.6563k/0/min_time:1.000       1647 us       1649 us        815   57.8415MB/s
BM_CopyBitmap/976.563k/0/min_time:1.000      16368 us      16397 us         81   58.1629MB/s
BM_CopyBitmap/97.6563k/4/min_time:1.000       1599 us       1610 us        815   59.2186MB/s
BM_CopyBitmap/976.563k/4/min_time:1.000      16026 us      16011 us         81   59.5644MB/s

**memcpy + shifting**
*This solution provides varying performance depending on whether or not the bit offset is a multiple of 8*
Run on (4 X 2208 MHz CPU s)
12/13/17 21:23:44
Benchmark                                        Time           CPU Iterations
BM_CopyBitmap/97.6563k/0/min_time:1.000          5 us          5 us     280000   18.9651GB/s
BM_CopyBitmap/976.563k/0/min_time:1.000         62 us         61 us      22400   15.1721GB/s
BM_CopyBitmap/97.6563k/4/min_time:1.000        171 us        170 us       6892   560.872MB/s
BM_CopyBitmap/976.563k/4/min_time:1.000       1639 us       1639 us        896   581.782MB/s

Author: Adam Seibert <>

Closes #1422 from seibs/ARROW-764 and squashes the following commits:

c813c8e2 [Adam Seibert] ARROW-764: [C++] Improves performance of CopyBitmap and adds benchmarks

11 days agoARROW-1977: [C++] Update windows dev docs
Chris Bartak [Wed, 10 Jan 2018 22:07:14 +0000 (17:07 -0500)] 
ARROW-1977: [C++] Update windows dev docs

Author: Chris Bartak <>

Closes #1466 from chris-b1/windows-cpp-devdoc and squashes the following commits:

0990ddc0 [Chris Bartak] remove python from cpp conda env
4dab8b05 [Chris Bartak] updates windows c++ env docs

11 days agoARROW-1978: [Website] Consolidate Powered By project list, add more visibly to front...
Wes McKinney [Wed, 10 Jan 2018 22:05:47 +0000 (17:05 -0500)] 
ARROW-1978: [Website] Consolidate Powered By project list, add more visibly to front page

There can be a fine line between what is an open source project and what is a company and what is a product or organization, so to keep things simple I have consolidated things into a single list without passing any judgments. I have also added a link to the Powered By page that is visible without digging into any menus on the front page

Author: Wes McKinney <>

Closes #1465 from wesm/website-powered-by-simplify and squashes the following commits:

7c43e0bd [Wes McKinney] Suggest adding to Powered By by pull request instead of e-mailing
9a61eed0 [Wes McKinney] Consolidate Powered By project list, add more visibly to front page

11 days agoARROW-1980: [Python] Fix race condition in write_to_dataset
Jim Crist [Wed, 10 Jan 2018 22:04:15 +0000 (17:04 -0500)] 
ARROW-1980: [Python] Fix race condition in write_to_dataset

One race condition was already fixed, but another one exists when
writing by partition.

Author: Jim Crist <>

Closes #1468 from jcrist/fix-race-condition-parquet-partition and squashes the following commits:

180c4a24 [Jim Crist] Fix race condition in write_to_dataset

11 days agoARROW-1965: [GLib] Add garrow_array_builder_get_value_data_type()
Kouhei Sutou [Wed, 10 Jan 2018 14:34:47 +0000 (23:34 +0900)] 
ARROW-1965: [GLib] Add garrow_array_builder_get_value_data_type()

garrow_array_builder_get_value_type() is also added for convenient.

Author: Kouhei Sutou <>

Closes #1456 from kou/glib-add-builder-get-value-type and squashes the following commits:

5a4b1229 [Kouhei Sutou] [GLib] Add garrow_array_builder_get_value_data_type()

13 days agoARROW-1969: [C++] Don't build ORC extension by default
Jim Crist [Mon, 8 Jan 2018 20:17:12 +0000 (15:17 -0500)] 
ARROW-1969: [C++] Don't build ORC extension by default

- Turns off building optional ORC extension by default
- Fixes travis builds to turn on ORC extension for a few branches
- Adds trivial import test to python build
- Adds documentation on how to build optional ORC extension

Author: Jim Crist <>

Closes #1457 from jcrist/orc-off-by-default and squashes the following commits:

fc9898d8 [Jim Crist] Document how to build ORC integration
950ae38e [Jim Crist] ORC integration is off by default

2 weeks agoARROW-1972: [Python] Import pyarrow in DeserializeObject.
Robert Nishihara [Sun, 7 Jan 2018 21:48:08 +0000 (13:48 -0800)] 
ARROW-1972: [Python] Import pyarrow in DeserializeObject.

Author: Robert Nishihara <>
Author: Philipp Moritz <>

Closes #1463 from robertnishihara/segfaultfix and squashes the following commits:

ec8a6c5 [Robert Nishihara] Add comment.
6222340 [Philipp Moritz] fix tests, linting, add license
3e969db [Robert Nishihara] Simplify tests.
8aa3fca [Philipp Moritz] add regression test
bfa0851 [Robert Nishihara] Import pyarrow in DeserializeObject.

2 weeks agoARROW-1958: [Python] Error in pandas conversion for datetimetz row index
Albert Shieh [Sun, 7 Jan 2018 17:28:19 +0000 (12:28 -0500)] 
ARROW-1958: [Python] Error in pandas conversion for datetimetz row index

Fix conversion of datetimetz row index for non-UTC time zones in to_pandas.

Author: Albert Shieh <>

Closes #1454 from adshieh/master and squashes the following commits:

6f413027 [Albert Shieh] Fix pandas conversion for datetimetz row index.

2 weeks agoARROW-1970: [GLib] Add garrow_chunked_array_get_value_data_type() and garrow_chunked_...
Kouhei Sutou [Sun, 7 Jan 2018 17:19:29 +0000 (12:19 -0500)] 
ARROW-1970: [GLib] Add garrow_chunked_array_get_value_data_type() and garrow_chunked_array_get_value_type()

Author: Kouhei Sutou <>

Closes #1458 from kou/glib-add-chunked-array-get-value-type and squashes the following commits:

4d99a079 [Kouhei Sutou] [GLib] Add garrow_chunked_array_get_value_data_type() and garrow_chunked_array_get_value_type()

2 weeks agoARROW-1962: [Java] Adding reset to ValueVector interface
Bryan Cutler [Fri, 5 Jan 2018 21:08:59 +0000 (13:08 -0800)] 
ARROW-1962: [Java] Adding reset to ValueVector interface

Adding `reset()` to the ValueVector interface and implementing where it is not done already.  Removing unused abstract class BaseDataValueVector that is not used anymore by the UnionVector.

Expanded reset tests to check that valueCount is 0, and buffers have same capacity and zeroed out.

Author: Bryan Cutler <>

Closes #1455 from BryanCutler/java-reset-ValueVector-ARROW-1962 and squashes the following commits:

da994e1 [Bryan Cutler] typo
a52e7db [Bryan Cutler] expanded reset documentations
1526a83 [Bryan Cutler] improved vector reset testing
a251d10 [Bryan Cutler] reset should zero data buffer and set value count to 0
bf2a16a [Bryan Cutler] add reset to NullableMapVector to zero validity buffer
7fbde5b [Bryan Cutler] need to zero out vector buffers when reset
b59addf [Bryan Cutler] adding reset to ValueVector interface, removing BaseDataValueVector

2 weeks agoARROW-1919: [Plasma] Test that object ids are 20 bytes
Philipp Moritz [Fri, 5 Jan 2018 03:33:04 +0000 (22:33 -0500)] 
ARROW-1919: [Plasma] Test that object ids are 20 bytes

Author: Philipp Moritz <>

Closes #1421 from pcmoritz/plasma-object-ids and squashes the following commits:

fc779087 [Philipp Moritz] fixes
9f613c0d [Philipp Moritz] fix windows test
f1d7ca05 [Philipp Moritz] fix linting
6be7f4a9 [Philipp Moritz] Test that object ids are 20 bytes

2 weeks agoARROW-1909: [C++] Enables building with benchmarks on windows
Adam Seibert [Fri, 5 Jan 2018 01:38:32 +0000 (20:38 -0500)] 
ARROW-1909: [C++] Enables building with benchmarks on windows

These changes were necessary to compile on Windows with "-DARROW_BUILD_BENCHMARKS=ON".  I added Shwlapi based on

Author: Adam Seibert <>

Closes #1406 from seibs/ARROW-1909 and squashes the following commits:

98602cd0 [Adam Seibert] ARROW-1909: [C++] Enables building with benchmarks on windows

2 weeks agoARROW-1920 [C++/Python] Add experimental reader for Apache ORC files
Jim Crist [Thu, 4 Jan 2018 15:11:13 +0000 (10:11 -0500)] 
ARROW-1920 [C++/Python] Add experimental reader for Apache ORC files

This adds support for reading ORC files in the C++ library, as well as python bindings for this functionality.

Author: Jim Crist <>
Author: Uwe L. Korn <>

Closes #1418 from jcrist/orc-adapter and squashes the following commits:

7e0400eb [Jim Crist] lint
d6d32b50 [Uwe L. Korn] Hide symbols introduced by orc static lib
a2966406 [Jim Crist] Tweak error message
f45ac3dd [Jim Crist] Read reads as a table
57bc63dd [Jim Crist] Use `vector<int>` instead of `list<uint64_t>`
1d539276 [Jim Crist] date32 instead of date64
4b7a3a5d [Jim Crist] Add brief docs
e7835445 [Jim Crist] More fixups
33f5b10f [Jim Crist] Turn off ARROW_ORC on windows
86a23550 [Jim Crist] Cleanups
2cfdd924 [Jim Crist] Fix build when dependencies aren't already installed
876c3a36 [Jim Crist] Use fPIC on protobuf as well
f4a29f87 [Jim Crist] Ensure -fPIC on orc build
7cf1659e [Jim Crist] Build python orc support on travis
2adf938a [Jim Crist] Add ORC support
5c791046 [Jim Crist] Add cmake support for liborc

2 weeks agoARROW-1941: [Python] Fix empty list roundtrip in to_pandas
Licht-T [Tue, 2 Jan 2018 16:30:45 +0000 (11:30 -0500)] 
ARROW-1941: [Python] Fix empty list roundtrip in to_pandas

This closes [ARROW-1941](

Author: Licht-T <>

Closes #1449 from Licht-T/fix-empty-list-roundtrip and squashes the following commits:

165dc6f [Licht-T] TST: Add test for the empty list roundtrip
0ddfd87 [Licht-T] BUG: Fix empty list roundtrip

3 weeks agoARROW-1946: [JAVA] Add APIs to decimal vector for writing big endian data
siddharth [Sun, 31 Dec 2017 04:05:08 +0000 (20:05 -0800)] 
ARROW-1946: [JAVA] Add APIs to decimal vector for writing big endian data

We recently moved Dremio to LE Decimal format (similar to Arrow). As part of that we introduced some APIs in decimal vector which take a big endian data and swap the bytes while writing into the ArrowBuf of decimal vector.

The advantage of these APIs is that caller would not have to allocate an additional memory and write( and read) source big endian twice for swapping into new memory and using that to write into the vector.

We can directly swap bytes while writing into the vector – just read once and swap while writing.

cc @jacques-n , @BryanCutler , @icexelloss

Author: siddharth <>

Closes #1443 from siddharthteotia/ARROW-1946 and squashes the following commits:

7805b62b [siddharth] unit tests
c89efbf8 [siddharth] ARROW-1946: Add APIs to decimal vector for writing big endian data

3 weeks agoARROW-1947: [Plasma] Change Client Create and Get to use Buffers
Philipp Moritz [Fri, 29 Dec 2017 22:19:38 +0000 (14:19 -0800)] 
ARROW-1947: [Plasma] Change Client Create and Get to use Buffers

- Create now takes in a pointer to a shared pointer of Buffer and returns a MutableBuffer.
- Object Buffers data and metadata are pointers to shared pointers of Buffer.

Author: Philipp Moritz <>
Author: William Paul <>

Closes #1444 from Wapaul1/plasma_buffer_api and squashes the following commits:

7fe1cee [Philipp Moritz] fix size of MutableBuffer returned by plasma::Create
aeed751 [Philipp Moritz] more linting
b3274e0 [Philipp Moritz] fix
463dbeb [Philipp Moritz] fix plasma python extension
a055fa8 [Philipp Moritz] fix linting
fc62dda [William Paul] Added metadata buffer
4d8cbb8 [William Paul] Create and Get use Buffers now

3 weeks agoARROW-1953: [JS] Fix JS build
Paul Taylor [Fri, 29 Dec 2017 19:47:05 +0000 (14:47 -0500)] 
ARROW-1953: [JS] Fix JS build

this is necessary until gulp publishes 4.0.0 builds to npm

Author: Paul Taylor <>

Closes #1453 from trxcllnt/fix-js-gulp-build and squashes the following commits:

0dddbcc [Paul Taylor] Merge branch 'master' into fix-js-gulp-build
dc329fa [Paul Taylor] Merge branch 'master' into fix-js-gulp-build
d9c1b0c [Paul Taylor] set gulp dependency to specific commit

3 weeks agoFix a comment typo (#1448)
Cheng Lian [Fri, 29 Dec 2017 16:54:05 +0000 (08:54 -0800)] 
Fix a comment typo (#1448)

3 weeks agoARROW-1945: [C++] Fix doxygen documentation of array.h
Viktor Gal [Fri, 29 Dec 2017 16:49:55 +0000 (17:49 +0100)] 
ARROW-1945:  [C++] Fix doxygen documentation of array.h

this is just a small fix in doxygen documentation of the c++ api

Author: Viktor Gal <>

Closes #1442 from vigsterkr/doxygen_fix and squashes the following commits:

3557aef [Viktor Gal] fix doxygen example in array.h

3 weeks agoARROW-1948: [Java] Load ListVector validity buffer with BitVectorHelper to handle...
Bryan Cutler [Thu, 28 Dec 2017 23:27:50 +0000 (15:27 -0800)] 
ARROW-1948: [Java] Load ListVector validity buffer with BitVectorHelper to handle all non-null

Need to properly set the ListVector validity buffer for the case when the field has all non-nulls.  This is done already in `BitVectorHelper.loadValidityBuffer`, so just need to build the buffer with a call to that function.

Author: Bryan Cutler <>

Closes #1447 from BryanCutler/java-ListVector-non-null-validity-buffer-ARROW-1948 and squashes the following commits:

0d82345 [Bryan Cutler] used BitVectorHelper to properly set the validity buffer

3 weeks agoARROW-1951: [Python] Add memcopy threads argument to PlasmaClient put.
Robert Nishihara [Thu, 28 Dec 2017 21:34:32 +0000 (13:34 -0800)] 
ARROW-1951: [Python] Add memcopy threads argument to PlasmaClient put.

Author: Robert Nishihara <>

Closes #1451 from robertnishihara/numthreads and squashes the following commits:

5e2c7ee [Robert Nishihara] Fix tests.
55cb8ac [Robert Nishihara] Revert old change
0903726 [Robert Nishihara] Move memcopy_threads from serialization context to put.
9281de1 [Robert Nishihara] Expose memcopy threads to serialization context.

4 weeks agoARROW-1943: [JAVA] handle setInitialCapacity for deeply nested lists
siddharth [Fri, 22 Dec 2017 19:24:43 +0000 (11:24 -0800)] 
ARROW-1943: [JAVA] handle setInitialCapacity for deeply nested lists

The current implementation of setInitialCapacity() uses a factor of 5 for every level we go into list:

So if the schema is LIST (LIST (LIST (LIST (LIST (LIST (LIST (BIGINT)))))) and we start with an initial capacity of 128, we end up throwing OversizedAllocationException from the BigIntVector because at every level we increased the capacity by 5 and by the time we reached inner scalar that actually stores the data, we were well over max size limit per vector (1MB).

We saw this problem downstream when we failed to read deeply nested JSON data.

The potential fix is to use the factor of 5 only when we are down to the leaf vector. As the depth increases and we are still working with complex/list, we don't use the factor of 5.

cc @jacques-n , @BryanCutler , @icexelloss

Author: siddharth <>

Closes #1439 from siddharthteotia/ARROW-1943 and squashes the following commits:

d0adbade [siddharth] unit tests
e2f21a8b [siddharth] fix imports
d103436b [siddharth] ARROW-1943: handle setInitialCapacity for deeply nested lists

4 weeks agoARROW-1944: [C++] Fix ARROW_STATIC_LIB in FindArrow
Philipp Moritz [Thu, 21 Dec 2017 23:05:15 +0000 (18:05 -0500)] 
ARROW-1944: [C++] Fix ARROW_STATIC_LIB in FindArrow

Author: Philipp Moritz <>

Closes #1440 from pcmoritz/findarrow-libs-fix and squashes the following commits:

bb161b4d [Philipp Moritz] fix static lib path in FindArrow

4 weeks agoARROW-1931: [C++] Suppress C4996 deprecation warning in MSVC builds for now
Wes McKinney [Thu, 21 Dec 2017 22:11:52 +0000 (17:11 -0500)] 
ARROW-1931: [C++] Suppress C4996 deprecation warning in MSVC builds for now

It's reasonably harmless to suppress these warnings for the time being. When we upgrade to a new release of googletest, we can remove this again

Author: Wes McKinney <>

Closes #1433 from wesm/ARROW-1931 and squashes the following commits:

09c3722f [Wes McKinney] Add tr1 define to CMAKE_CXX_FLAGS
6fe636ec [Wes McKinney] Rearrange appveyor build jobs for faster feedback
6ace398e [Wes McKinney] Use CXX_COMMON_FLAGS, all in one place
b786a405 [Wes McKinney] Silence std::tr1 tuple warning everywhere
549e0833 [Wes McKinney] Silence std::tr1 namespace warning only when building gtest
13a77e6b [Wes McKinney] Silence tr1 deprecation warning in MSVC 2017
ccf13188 [Wes McKinney] Add /bigobj flag, suppress C4996 deprecation warning for now

4 weeks agoARROW-1939: Correct links in release blog post
siddharth [Wed, 20 Dec 2017 19:52:17 +0000 (11:52 -0800)] 
ARROW-1939: Correct links in release blog post

cc @wesm

Author: siddharth <>

Closes #1436 from siddharthteotia/ARROW-1939 and squashes the following commits:

31f1be14 [siddharth] ARROW-1939: Correct links in release blog post

4 weeks agoARROW-1934: [Website] 0.8.0 release highlights blog post
Wes McKinney [Tue, 19 Dec 2017 15:29:30 +0000 (10:29 -0500)] 
ARROW-1934: [Website] 0.8.0 release highlights blog post

I took a hack at this after poring through the changelog, others please let me know if you'd like to add or change anything. I need to incorporate Sidd's blog post and add a link to that here. I can publish all of this sometime tomorrow morning New York time and post to social media etc.

Author: Wes McKinney <>

Closes #1432 from wesm/ARROW-1934 and squashes the following commits:

4aa6bc6a [Wes McKinney] Tweaks for publication
da9e65d4 [Wes McKinney] Start drafting 0.8.0 release blog post

4 weeks agoARROW-232: [Python] Add unit test for writing Parquet file from chunked table
Wes McKinney [Tue, 19 Dec 2017 14:40:11 +0000 (09:40 -0500)] 
ARROW-232: [Python] Add unit test for writing Parquet file from chunked table

This requires PARQUET-1092

Author: Wes McKinney <>

Closes #1425 from wesm/ARROW-232 and squashes the following commits:

da8d9998 [Wes McKinney] Add unit test to validate PARQUET-1092

4 weeks agoARROW-1935: [Website] Remove link to nightly builds. Fix signature / checksum links...
Wes McKinney [Tue, 19 Dec 2017 14:39:06 +0000 (09:39 -0500)] 
ARROW-1935: [Website] Remove link to nightly builds. Fix signature / checksum links, add verification instructions

Website fixes per ASF policies and feedback in ARROW-1935, ARROW-1936

Author: Wes McKinney <>

Closes #1434 from wesm/ARROW-1935 and squashes the following commits:

41f128ec [Wes McKinney] Remove link to nightly builds. Fix signature / checksum links, add KEYS file, verification instructions

4 weeks agoARROW-1922: Blog post on JAVA vector changes
siddharth [Tue, 19 Dec 2017 04:36:19 +0000 (23:36 -0500)] 
ARROW-1922: Blog post on JAVA vector changes

cc @wesm , @jacques-n , @BryanCutler , @icexelloss

A small post on recent improvements in JAVA vectors. Suggestions are welcome :)

Author: siddharth <>
Author: Wes McKinney <>

Closes #1419 from siddharthteotia/ARROW-1922 and squashes the following commits:

ebdd986a [Wes McKinney] Minor tweaks to post, add Dremio link
eaedd879 [siddharth] review comments
57050195 [siddharth] correct typo
c2af13c2 [siddharth] ARROW-1922: Blog post on JAVA vector changes

4 weeks agoARROW-1832: [JS] Implement JSON reader for integration tests
Paul Taylor [Tue, 19 Dec 2017 03:53:28 +0000 (22:53 -0500)] 
ARROW-1832: [JS] Implement JSON reader for integration tests

Add JSON reader, as well as `js/bin/integration.js` script for running integration test validation

Author: Paul Taylor <>
Author: Brian Hulette <>
Author: Brian Hulette <>

Closes #1343 from TheNeuralBit/json-reader and squashes the following commits:

bd6e80cf [Paul Taylor] print correct error messages
f1a51bdd [Paul Taylor] update example html file for new API
bb0059b8 [Paul Taylor] fix off by one error reading buffers from metadata v3 arrows
6da297ca [Paul Taylor] update CI and JS integration scripts to invoke jest integration tests
03d82bd4 [Paul Taylor] add integration tests to gulp test task
937dbf84 [Paul Taylor] split out integration and unit tests
e0354a76 [Paul Taylor] quote enum keys to save from mangling, add JSON customMetadata map
c49f43a1 [Paul Taylor] use string indexers to protect JSON fields from closure compiler's mangler, fix es5 umd build
97f8e5e4 [Paul Taylor] really flatten buffers from json
7b6ea0a3 [Paul Taylor] fix a few json reader typos
fa352ead [Paul Taylor] update tests
f81dcb9c [Paul Taylor] move arrow2csv into src so it's distributed in the npm packages
b5f14702 [Paul Taylor] add Arrow types AST, refactor buffer + json reader to emit type AST nodes
85bf03c9 [Brian Hulette] linter fixes
793f9e56 [Brian Hulette] only use json-bignum in bin/integration
eaa5de4a [Brian Hulette] add dictionary-encoded vectors
12f99de0 [Brian Hulette] Add JSON support for Date/Time/Timestamp vectors
53490806 [Brian Hulette] move test data creation after
68c23494 [Paul Taylor] update npm script name in integration runner
f50356e0 [Paul Taylor] run the js build before
dcc85f92 [Brian Hulette] linter fixes
313cd587 [Brian Hulette] Add int-test to test-task
86b53b47 [Brian Hulette] Use Int128.fromString in JSON reader
148e997f [Brian Hulette] cleanup
a2befbb4 [Brian Hulette] Switch endianness of Int64/128
a1ea88f8 [Brian Hulette] Now uses Uint32 for all internal buffers
02a7838d [Brian Hulette] WIP Int64, Int128
645b844b [Brian Hulette] JS integration script uses new Table.from for JSON
c1f3f6ad [Paul Taylor] move createTypedArray and createValidityArray to VectorReaderContext
1191a277 [Paul Taylor] refactor `Table.from()` to accept a JSON object or string
02ea8a67 [Paul Taylor] refactor traits to be compatible with closure compiler's full ES6 -> ES5
01de162b [Paul Taylor] move generated format to format/fb folder, fix closure compiler es5 build
ad417411 [Brian Hulette] Fix bug with zero-length vectors
b17367cc [Brian Hulette] Add list,struct to JSON reader
e3d6d622 [Brian Hulette] linter fixes
1e64707c [Brian Hulette] Add JS integration script and JS runner
7e33b1c4 [Brian Hulette] Add JSON reader

4 weeks agoARROW-1926: [GLib] Add garrow_timestamp_data_type_get_unit()
Kouhei Sutou [Tue, 19 Dec 2017 03:46:19 +0000 (22:46 -0500)] 
ARROW-1926: [GLib] Add garrow_timestamp_data_type_get_unit()

This is not a 0.8.0 broker.

If 0.8.0 RC2 is dropped, I hope that 0.8.0 includes this.
If RC2 has no problem, I hope that 0.9.0 includes this.

Author: Kouhei Sutou <>

Closes #1424 from kou/glib-add-timestamp-data-type-get-unit and squashes the following commits:

a88771b2 [Kouhei Sutou] [GLib] Add garrow_timestamp_data_type_get_unit()

4 weeks agoARROW-1932: [Website] Update site for 0.8.0 release info
Jacques Nadeau [Mon, 18 Dec 2017 05:03:39 +0000 (21:03 -0800)] 
ARROW-1932: [Website] Update site for 0.8.0 release info

4 weeks agoARROW-1933: [GLib] Fix build error with --with-arrow-cpp-build-dir
Kouhei Sutou [Mon, 18 Dec 2017 15:52:22 +0000 (16:52 +0100)] 
ARROW-1933: [GLib] Fix build error with --with-arrow-cpp-build-dir

The option is used in building deb package.

`arrow/gpu/cuda_version.h` exists in build directory not source directory.

Author: Kouhei Sutou <>

Closes #1429 from kou/glib-fix-build-error-with-arrow-cpp-build-dir and squashes the following commits:

879d6bc [Kouhei Sutou] [GLib] Fix build error with --with-arrow-cpp-build-dir

4 weeks agoARROW-1924: [Python] Bring back pickle=True option for serialization
Philipp Moritz [Mon, 18 Dec 2017 05:34:56 +0000 (00:34 -0500)] 
ARROW-1924: [Python] Bring back pickle=True option for serialization

Author: Philipp Moritz <>

Closes #1420 from pcmoritz/revert-to-pickle-arg and squashes the following commits:

bfef3aeb [Philipp Moritz] fix windows test
c1566538 [Philipp Moritz] fix remote serialization test on windows
3f58d0df [Philipp Moritz] fix windows
6a2a83dd [Philipp Moritz] add regression test
3eb93258 [Philipp Moritz] fix
518fb7d8 [Philipp Moritz] fix
b4885862 [Philipp Moritz] revert to pickle=True argument for serialization

5 weeks ago[maven-release-plugin] prepare for next development iteration
Wes McKinney [Tue, 12 Dec 2017 22:22:39 +0000 (17:22 -0500)] 
[maven-release-plugin] prepare for next development iteration

Change-Id: I2a7909e2f0fa87780197270982ef941d89834cca

5 weeks ago[maven-release-plugin] prepare release apache-arrow-0.8.0 apache-arrow-0.8.0
Wes McKinney [Tue, 12 Dec 2017 22:22:29 +0000 (17:22 -0500)] 
[maven-release-plugin] prepare release apache-arrow-0.8.0

Change-Id: Ia6278e52e2669880cbe32d79bd2fcda48951d3fa

5 weeks ago[Release] Update for 0.8.0
Wes McKinney [Tue, 12 Dec 2017 22:19:42 +0000 (17:19 -0500)] 
[Release] Update for 0.8.0

Change-Id: If8489283f73f5aa8947f742958cdb4a0b5a76084

5 weeks agoARROW-1917: Fixes to enable to work for 0.8.0
Wes McKinney [Tue, 12 Dec 2017 22:18:18 +0000 (17:18 -0500)] 
ARROW-1917: Fixes to enable to work for 0.8.0

Author: Wes McKinney <>

Closes #1417 from wesm/ARROW-1917 and squashes the following commits:

e394f301 [Wes McKinney] Disable integration portion of JS. Run integration tests earlier
363c4bea [Wes McKinney] Set GI_TYPELIB_PATH when testing glib in verify-release-candidate-sh
420a5716 [Wes McKinney] [Java] Change scm git link in pom.xml

5 weeks agoARROW-1915: [Python] Add missing parquet decorator to decimal tests
Bryan Cutler [Tue, 12 Dec 2017 22:17:20 +0000 (17:17 -0500)] 
ARROW-1915: [Python] Add missing parquet decorator to decimal tests

In `` add the `@parquet` decorator to 2 decimal tests so they can be skipped.

Author: Bryan Cutler <>

Closes #1415 from BryanCutler/python-parquet-decimal-tests-decorator-ARROW-1915 and squashes the following commits:

822ec433 [Bryan Cutler] add missing parquet decorator to decimal tests

5 weeks agoARROW-1916: [Java] Include java/dev/checkstyle in git archive for source releases
Wes McKinney [Tue, 12 Dec 2017 20:58:00 +0000 (15:58 -0500)] 
ARROW-1916: [Java] Include java/dev/checkstyle in git archive for source releases

Author: Wes McKinney <>

Closes #1416 from wesm/ARROW-1916 and squashes the following commits:

58402637 [Wes McKinney] Include java/dev/checkstyle in git archive for source releases

5 weeks agoARROW-1914: [C++] Fix build dependency for GPU support build
Kouhei Sutou [Tue, 12 Dec 2017 20:08:54 +0000 (15:08 -0500)] 
ARROW-1914: [C++] Fix build dependency for GPU support build

"make -j" may cause build error:

    [100%] Built target gflags_nothreads_static
    Install the project...
    -- Install configuration: "RELEASE"
    -- Installing: /tmp/arrow-0.8.0.GLyu7/apache-arrow-0.8.0/cpp/build/gflags_ep-prefix/src/gflags_ep/lib/cmake/gflags/gflags-config.cmake
    -- Installing: /tmp/arrow-0.8.0.GLyu7/apache-arrow-0.8.0/cpp/build/gflags_ep-prefix/src/gflags_ep/lib/cmake/gflags/gflags-config-version.cmake
    -- Installing: /tmp/arrow-0.8.0.GLyu7/apache-arrow-0.8.0/cpp/build/gflags_ep-prefix/src/gflags_ep/lib/cmake/gflags/gflags-targets.cmake
    -- Installing: /tmp/arrow-0.8.0.GLyu7/apache-arrow-0.8.0/cpp/build/gflags_ep-prefix/src/gflags_ep/lib/cmake/gflags/gflags-targets-release.cmake
    -- Installing: /tmp/arrow-0.8.0.GLyu7/apache-arrow-0.8.0/cpp/build/gflags_ep-prefix/src/gflags_ep/bin/
    -- Installing: /tmp/arrow-0.8.0.GLyu7/apache-arrow-0.8.0/cpp/build/gflags_ep-prefix/src/gflags_ep/lib/pkgconfig/gflags.pc
    -- Installing: /home/kou/.cmake/packages/gflags/fb801def37c922433975cbfefb3aa08d
    [ 26%] Completed 'gflags_ep'
    [ 55%] Building C object CMakeFiles/brotlienc.dir/enc/literal_cost.c.o
    [ 26%] Built target gflags_ep
    Scanning dependencies of target arrow_gpu_objlib
    [ 26%] Building CXX object src/arrow/gpu/CMakeFiles/arrow_gpu_objlib.dir/
    [ 59%] Building C object CMakeFiles/brotlienc.dir/enc/memory.c.o
    /tmp/arrow-0.8.0.GLyu7/apache-arrow-0.8.0/cpp/src/arrow/gpu/ fatal error: arrow/ipc/Message_generated.h: No such file or directory
     #include "arrow/ipc/Message_generated.h"
    compilation terminated.
    src/arrow/gpu/CMakeFiles/arrow_gpu_objlib.dir/build.make:62: recipe for target 'src/arrow/gpu/CMakeFiles/arrow_gpu_objlib.dir/' failed
    make[2]: *** [src/arrow/gpu/CMakeFiles/arrow_gpu_objlib.dir/] Error 1
    CMakeFiles/Makefile2:2108: recipe for target 'src/arrow/gpu/CMakeFiles/arrow_gpu_objlib.dir/all' failed
    make[1]: *** [src/arrow/gpu/CMakeFiles/arrow_gpu_objlib.dir/all] Error 2
    make[1]: *** Waiting for unfinished jobs....

Author: Kouhei Sutou <>

Closes #1414 from kou/cpp-fix-gpu-build-dependency and squashes the following commits:

8fe28c7a [Kouhei Sutou] [C++] Fix build dependency for GPU support build

5 weeks agoARROW-1911: [JS] Add Graphistry to Arrow JS proof points
lmeyerov [Tue, 12 Dec 2017 20:08:14 +0000 (15:08 -0500)] 
ARROW-1911: [JS] Add Graphistry to Arrow JS proof points

Realized Graphistry's use wasn't listed, which matters as we're the most enterprise-y user right now.

Also made the GOAI reference more clear.

Author: lmeyerov <>

Closes #1412 from lmeyerov/patch-1 and squashes the following commits:

ff5f7375 [lmeyerov] fix(more precise description)
1fe8dad2 [lmeyerov] docs(fix backlink information architecture)
3a80c4d8 [lmeyerov] docs(tweak js readme)
d78f414c [lmeyerov] docs(normalize and sort implementation order)
4968dc93 [lmeyerov] docs(graphistry and goai in main powered by)
af8c0383 [lmeyerov] docs(include JS impl in main list)
e70e534d [lmeyerov] docs(add getting involved to
a7e8d017 [lmeyerov] docs(add and cleanup orgs)
29629260 [lmeyerov] [JS] Add Graphistry to Arrow JS projects

5 weeks agoARROW-1904: [C++] Deprecate PrimitiveArray::raw_values
Wes McKinney [Mon, 11 Dec 2017 15:42:00 +0000 (10:42 -0500)] 
ARROW-1904: [C++] Deprecate PrimitiveArray::raw_values

I was mistaken about this method's handling of the offset parameter, but it doesn't work correctly for boolean data (also a subclass of `PrimitiveArray`), so I think it's better to remove this method altogether

Author: Wes McKinney <>

Closes #1409 from wesm/ARROW-1904 and squashes the following commits:

eb735555 [Wes McKinney] clang-format
fa88b4c9 [Wes McKinney] Deprecate PrimitiveArray::raw_values, add implementation for FixedSizeBinary

5 weeks agoARROW-1905: [Python] Add more comprehensive list of exact type checking functions...
Wes McKinney [Mon, 11 Dec 2017 15:09:16 +0000 (10:09 -0500)] 
ARROW-1905: [Python] Add more comprehensive list of exact type checking functions to pyarrow.types

cc @BryanCutler

Author: Wes McKinney <>

Closes #1410 from wesm/ARROW-1905 and squashes the following commits:

93bddc9f [Wes McKinney] Add new functions to API, fix docstring
dcd0829f [Wes McKinney] Add more exact type checking functions

5 weeks agoARROW-1906: [Python] Do not override user-supplied type in pyarrow.array when convert...
Wes McKinney [Mon, 11 Dec 2017 15:06:25 +0000 (10:06 -0500)] 
ARROW-1906: [Python] Do not override user-supplied type in pyarrow.array when converting DatetimeTZ pandas data

cc @BryanCutler

Author: Wes McKinney <>

Closes #1411 from wesm/ARROW-1906 and squashes the following commits:

49392e03 [Wes McKinney] Trust supplied user type in pyarrow.array when converting datetime+tz pandas data

5 weeks agoARROW-1883: [Python] Fix handling of metadata in to_pandas when not all columns are...
Joris Van den Bossche [Sun, 10 Dec 2017 23:40:09 +0000 (18:40 -0500)] 
ARROW-1883: [Python] Fix handling of metadata in to_pandas when not all columns are present

This closes [ARROW-1883](

So basically what I did in `_add_any_metadata` was replacing `col = table[i]` with:

idx = schema.get_field_index(raw_name)
if idx != -1:
     col = table[idx]

to check that the column is actually present in the schema. However, that involved some more code to get to `raw_name` (the name how the column is present in the schema), as this does not always match the name in `pandas_metadata['column'][..]['name']`. Not sure if there is a better way to get that name.
(or if it would be better to filter `pandas_metadata` earlier on, instead of checking when actually trying to process the metadata of that column)

Author: Joris Van den Bossche <>

Closes #1386 from jorisvandenbossche/parquet-column-selection and squashes the following commits:

3f605ef3 [Joris Van den Bossche] add test for compatibility for arrow 0.7.1 written parquet files
ea891b25 [Joris Van den Bossche] Use field_name if available
f6bdd1d3 [Joris Van den Bossche] Merge remote-tracking branch 'upstream/master' into parquet-column-selection
5df51f18 [Joris Van den Bossche] Add additional tests
306eaba3 [Joris Van den Bossche] ARROW-1883: [Python] Fix handling of metadata in to_pandas when not all columns are present

5 weeks agoARROW-1910: [C++] Use c_glib Brewfile in README for installing dependencies on macOS...
Lewis John McGibbney [Sun, 10 Dec 2017 23:25:39 +0000 (15:25 -0800)] 
ARROW-1910: [C++] Use c_glib Brewfile in README for installing dependencies on macOS (#1407)

6 weeks agoARROW-1895/ARROW-1897: [Python] Add field_name to pandas index metadata
Phillip Cloud [Sun, 10 Dec 2017 18:33:55 +0000 (19:33 +0100)] 
ARROW-1895/ARROW-1897: [Python] Add field_name to pandas index metadata

Author: Phillip Cloud <>
Author: Wes McKinney <>

Closes #1397 from cpcloud/ARROW-1895 and squashes the following commits:

1293b24 [Wes McKinney] Extra metadata is None in py2
3f7760f [Phillip Cloud] Fix py2 test
3bc30fd [Phillip Cloud] Operator precedence
891671b [Phillip Cloud] Unicode bytes difference
3c41905 [Phillip Cloud] Cleaner construction
cf52001 [Phillip Cloud] Use field_name to map arrow table field names to pandas names
37dca10 [Phillip Cloud] Fix string vs unicode in column_indexes and add field_name as well
f570871 [Phillip Cloud] Use categorical codes instead of object
20bf15a [Phillip Cloud] ARROW-1895: [Python] Add field_name to pandas index metadata

6 weeks agoARROW-1908: [Python] Construction of arrow table from pandas DataFrame with duplicate...
Phillip Cloud [Sun, 10 Dec 2017 04:39:49 +0000 (23:39 -0500)] 
ARROW-1908: [Python] Construction of arrow table from pandas DataFrame with duplicate column names crashes

Author: Phillip Cloud <>

Closes #1405 from cpcloud/ARROW-1908 and squashes the following commits:

86b2b21e [Phillip Cloud] ARROW-1908: [Python] Construction of arrow table from pandas DataFrame with duplicate column names crashes

6 weeks agoARROW-1902: [Python] Remove mkdir race condition from write_to_dataset
Uwe L. Korn [Fri, 8 Dec 2017 10:42:19 +0000 (11:42 +0100)] 
ARROW-1902: [Python] Remove mkdir race condition from write_to_dataset

Author: Uwe L. Korn <>

Closes #1402 from xhochy/ARROW-1902 and squashes the following commits:

199e101 [Uwe L. Korn] ARROW-1902: [Python] Remove mkdir race condition from write_to_dataset

6 weeks agoARROW-1901: [Python] Support recursive mkdir for DaskFilesystem
Uwe L. Korn [Fri, 8 Dec 2017 10:41:45 +0000 (11:41 +0100)] 
ARROW-1901: [Python] Support recursive mkdir for DaskFilesystem

Author: Uwe L. Korn <>

Closes #1401 from xhochy/ARROW-1901 and squashes the following commits:

4a86b4b [Uwe L. Korn] ARROW-1901: [Python] Support recursive mkdir for DaskFilesystem

6 weeks agoARROW-1864: [Java] Upgrade Netty to 4.1.17
Shixiong Zhu [Fri, 8 Dec 2017 01:20:07 +0000 (20:20 -0500)] 
ARROW-1864: [Java] Upgrade Netty to 4.1.17

Upgrade Netty to 4.1.17 since the Netty community will deprecate 4.0.x soon. This PR includes the following changes:
- Bump Netty version.
- Implement new ByteBuf APIs added in Netty 4.1.x: a bunch of get/setXXXLE methods. They are the opposite of get/setXXX method regarding byte order. E.g., as ArrowBuf is little endian, `setInt` will put an `int` to the buffer in little endian byte order, while `setIntLE` will put `int` in big byte endian order. The method naming seems confusing anyway, and I opened a Netty issue: The user can call these new methods to get or set multi-byte integers in big endian byte order.
- Make ArrowByteBufAllocator overwrite AbstractByteBufAllocator.

Author: Shixiong Zhu <>

Closes #1376 from zsxwing/ARROW-1864 and squashes the following commits:

96a93e18 [Shixiong Zhu] extend AbstractByteBufAllocator; add javadoc for new methods
bb973335 [Shixiong Zhu] Add comment for calculateNewCapacity
555f88ae [Shixiong Zhu] Add methods back
5e09cca6 [Shixiong Zhu] Upgrade Netty to 4.1.x

6 weeks agoARROW-1873: [Python] Catch more possible Python/OOM errors in to_pandas conversion...
Wes McKinney [Fri, 8 Dec 2017 01:06:47 +0000 (20:06 -0500)] 
ARROW-1873: [Python] Catch more possible Python/OOM errors in to_pandas conversion path

I also ran into a gnarly method dispatching bug ARROW-1904 while working on this. I will address that deprecation in a separate patch

Author: Wes McKinney <>

Closes #1404 from wesm/ARROW-1873 and squashes the following commits:

10001c6a [Wes McKinney] Add various Python error checks for possible OOM. More centralized handling of array offsets

6 weeks agoARROW-1884: [C++] Exclude integration test JSON reader/writer classes from public API
Wes McKinney [Thu, 7 Dec 2017 20:54:24 +0000 (15:54 -0500)] 
ARROW-1884: [C++] Exclude integration test JSON reader/writer classes from public API

These were showing up in our Doxygen docs and may mislead users reading the public API into thinking these classes do something that they do not (they don't read general JSON)

Author: Wes McKinney <>

Closes #1400 from wesm/ARROW-1884 and squashes the following commits:

9b299144 [Wes McKinney] Move integration JSON reader/writer into internal namespace, do not export symbols

6 weeks agoARROW-1893: [Python] Convert memoryview to bytes when loading from pickle in Python 2.7
Wes McKinney [Thu, 7 Dec 2017 16:00:56 +0000 (11:00 -0500)] 
ARROW-1893: [Python] Convert memoryview to bytes when loading from pickle in Python 2.7

It seems somewhere in the 2.7.x series, Python 2.7 acquired the ability to load from memoryview. To be on the safe side, we'll always convert memoryview to bytes. Here's a related workaround from IPython:

Author: Wes McKinney <>

Closes #1398 from wesm/ARROW-1893 and squashes the following commits:

cbe69134 [Wes McKinney] Not all versions of Python 2.7 can load pickles directly from memoryview

6 weeks agoARROW-1891: [Python] Always use NumPy NaT sentinels to mark nulls when converting...
Wes McKinney [Thu, 7 Dec 2017 15:02:36 +0000 (10:02 -0500)] 
ARROW-1891: [Python] Always use NumPy NaT sentinels to mark nulls when converting to array

This code path could benefit from some refactoring, but this is enough to get things working properly, and we can refactor later.

Author: Wes McKinney <>

Closes #1399 from wesm/ARROW-1891 and squashes the following commits:

718c70c8 [Wes McKinney] Null sentinels always possible whether or not from_pandas=True when dealing with datetime64 values
7af1bf54 [Wes McKinney] Failing test case

6 weeks agoARROW-1867: [Java] Add missing methods to BitVector from legacy vector class
Bryan Cutler [Thu, 7 Dec 2017 04:18:40 +0000 (23:18 -0500)] 
ARROW-1867: [Java] Add missing methods to BitVector from legacy vector class

After the ValueVector refactor, the BitVector class was missing the methods setToOne and setRangeToOne from the legacy vector class.  This PR adds them back and restores the BItVector tests to use these APIs.

Author: Bryan Cutler <>

Closes #1396 from BryanCutler/java-addmissing-BitVector-methods-ARROW-1867 and squashes the following commits:

16142162 [Bryan Cutler] added methods setToOne and setRangeToOne from legacy BitVector

6 weeks agoARROW-1877: [Java] Fix incorrect equals method in JsonStringArrayList
vkorukanti [Wed, 6 Dec 2017 23:34:50 +0000 (18:34 -0500)] 
ARROW-1877: [Java] Fix incorrect equals method in JsonStringArrayList

Currently it uses containsAll which could return wrong results.
Ex. e1: [true, true, false], e2: [true, false, false].

Remove the equals method and fallback to super class method
which has the correct implementation.

Author: vkorukanti <>

Closes #1380 from vkorukanti/ARROW-1877 and squashes the following commits:

194629ed [vkorukanti] removed `equals` from `JsonStringHashMap`
4732ddf6 [vkorukanti] ARROW-1877: Fix incorrect equals method in JsonStringArrayList

6 weeks agoARROW-1487: [C++] Implement casts from List<A> to List<B>, where a cast function...
Licht-T [Wed, 6 Dec 2017 21:40:33 +0000 (16:40 -0500)] 
ARROW-1487: [C++] Implement casts from List<A> to List<B>, where a cast function is defined from any A to B

This closes [ARROW-1487](

Author: Licht-T <>
Author: Wes McKinney <>

Closes #1383 from Licht-T/feature-list-to-list-cast and squashes the following commits:

53a21a5f [Wes McKinney] Fix cpplint warning
0903e5fc [Wes McKinney] Remove unneeded macro
87a00207 [Wes McKinney] Implement ListCastKernel
a8046d08 [Licht-T] Implement child cast kernel checking before cast evaluation
cca90681 [Licht-T] TST: Add test for casting from List<A> to List<B>
058aad07 [Licht-T] ENH: Implement List<A> to List<B> cast

6 weeks agoARROW-1892: [Python] Support binaries in lists
Uwe L. Korn [Wed, 6 Dec 2017 20:59:42 +0000 (15:59 -0500)] 
ARROW-1892: [Python] Support binaries in lists

Author: Uwe L. Korn <>

Closes #1394 from xhochy/ARROW-1892 and squashes the following commits:

1dbf4b25 [Uwe L. Korn] ARROW-1892: [Python] Support binaries in lists

6 weeks agoARROW-1857: [Python] Add switch for boost linkage with static parquet in wheels
Uwe L. Korn [Wed, 6 Dec 2017 19:11:20 +0000 (14:11 -0500)] 
ARROW-1857: [Python] Add switch for boost linkage with static parquet in wheels

Author: Uwe L. Korn <>

Closes #1395 from xhochy/ARROW-1857 and squashes the following commits:

71d97bc7 [Uwe L. Korn] ARROW-1857: [Python] Add switch for boost linkage with static parquet in wheels

6 weeks agoARROW-1784: [Python] Enable zero-copy serialization, deserialization of pandas.DataFr...
Wes McKinney [Wed, 6 Dec 2017 19:10:23 +0000 (14:10 -0500)] 
ARROW-1784: [Python] Enable zero-copy serialization, deserialization of pandas.DataFrame via components

This patch adds a serialization path for pandas.DataFrame (and Series) that decomposes the internal BlockManager into a dictionary structure that can be serialized to the zero-copy component representation from ARROW-1783, and then reconstructed similarly.

The impact of this is that when a DataFrame has no data that requires pickling, the reconstruction is zero-copy. I will post some benchmarks to illustrate the impact of this. The performance improvements are pretty remarkable, nearly 1000x speedup on a large DataFrame.

As some follow-up work, we will need to do more efficient serialization of the different pandas Index types. We should create a new JIRA for this

Author: Wes McKinney <>

Closes #1390 from wesm/ARROW-1784 and squashes the following commits:

21adbe7d [Wes McKinney] Do not test with IntervalIndex in pandas < 0.21, since manylinux1 is pinned at 0.20.1
939c02bb [Wes McKinney] Add pandas serialization test for periods, intervals
4b4c776c [Wes McKinney] Code comment, add more serialization docs for pandas / component serialization
1ac073c3 [Wes McKinney] Complete component-based serializer for pandas.DataFrame
6b01746d [Wes McKinney] Begin refactoring

6 weeks agoARROW-1889: [Python] --exclude is not available in older git versions
Korn, Uwe [Wed, 6 Dec 2017 16:01:19 +0000 (17:01 +0100)] 
ARROW-1889: [Python] --exclude is not available in older git versions

Author: Korn, Uwe <>

Closes #1392 from xhochy/ARROW-1889 and squashes the following commits:

05a10eb [Korn, Uwe] ARROW-1889: [Python] --exclude is not available in older git versions

6 weeks agoARROW-1890: [Python] Fix mask handling for Date32 NumPy conversions
Uwe L. Korn [Wed, 6 Dec 2017 16:00:45 +0000 (17:00 +0100)] 
ARROW-1890: [Python] Fix mask handling for Date32 NumPy conversions

Author: Uwe L. Korn <>

Closes #1393 from xhochy/ARROW-1890 and squashes the following commits:

7ef92ea [Uwe L. Korn] ARROW-1890: [Python] Fix mask handling for Date32 NumPy conversions

6 weeks agoARROW-1882: [C++] Reintroduce DictionaryBuilder
Korn, Uwe [Wed, 6 Dec 2017 03:02:49 +0000 (22:02 -0500)] 
ARROW-1882: [C++] Reintroduce DictionaryBuilder

Readded the previous code and moved some small parts to a new common place to share logic between kernels and builder.

Author: Korn, Uwe <>
Author: Wes McKinney <>

Closes #1388 from xhochy/ARROW-1882 and squashes the following commits:

db9d67a8 [Wes McKinney] Consolidate some hash table constants in util/hash.h
b387b73d [Korn, Uwe] Ensure 64but integers
4743a8bb [Korn, Uwe] Fix precision loss
4c507fed [Korn, Uwe] ninja format
a1da9355 [Korn, Uwe] Reuse common hash table code
ba307794 [Korn, Uwe] ARROW-1882: [C++] Reintroduce DictionaryBuilder

6 weeks agoARROW-1881: Ignore JS tags for Python packages
Korn, Uwe [Tue, 5 Dec 2017 18:59:26 +0000 (13:59 -0500)] 
ARROW-1881: Ignore JS tags for Python packages

Author: Korn, Uwe <>

Closes #1391 from xhochy/ARROW-1881 and squashes the following commits:

1e31a74c [Korn, Uwe] ARROW-1881: Ignore JS tags for Python packages

6 weeks agoARROW-1839/ARROW-1871: [C++/Python] Add Decimal Parquet Read/Write Tests
Phillip Cloud [Tue, 5 Dec 2017 03:39:44 +0000 (22:39 -0500)] 
ARROW-1839/ARROW-1871: [C++/Python] Add Decimal Parquet Read/Write Tests

Author: Phillip Cloud <>
Author: Wes McKinney <>

Closes #1335 from cpcloud/ARROW-1839 and squashes the following commits:

496ec796 [Wes McKinney] Make RescaleDecimal instead an instance method of Decimal128
878d9a1d [Phillip Cloud] Fix namespace
816ff42a [Phillip Cloud] Use IsPyInteger
41c447fb [Wes McKinney] Add missing license header
3b91e550 [Wes McKinney] Rename Rescale to RescaleDecimal
accc653d [Wes McKinney] Make AppendItem methods non-virtual for CRTP inlining
bbc14cf4 [Phillip Cloud] int64_t for looping
b6f8592f [Phillip Cloud] Generate a column for different scales
afe4396a [Phillip Cloud] docstring
ade030e5 [Phillip Cloud] Clarify randdecimal contract
752e905b [Phillip Cloud] Use Python C API instead of string parsing
115fbc96 [Phillip Cloud] Remove iostream include
1f6339d8 [Phillip Cloud] Clean up testing
a4b1d6bb [Phillip Cloud] Add randdecimal to util
07c356ac [Phillip Cloud] Remove inference from python objects
c7637f19 [Phillip Cloud] Refactor test
dba8a0d9 [Phillip Cloud] Add docs
4296b5c9 [Phillip Cloud] Infer the scale by looking at every Python decimal object
98e319af [Phillip Cloud] Remove debugging
2d02b44f [Phillip Cloud] More style fixes
f235ef42 [Phillip Cloud] Style fixes
97c0a6b5 [Phillip Cloud] Make sure we assign to our out variable
d4a32361 [Phillip Cloud] Move rescaling to decimal.h/cc
891137fd [Phillip Cloud] Formatting
deea4711 [Phillip Cloud] Refactor rescaling functionality
108e8914 [Phillip Cloud] Format
c28e2c17 [Phillip Cloud] Remove test
cbb2ed76 [Phillip Cloud] Rewrite infer precision and scale from python
7a2de887 [Phillip Cloud] Add rescaling
b2ad3b7f [Phillip Cloud] Rename
e0d6080a [Phillip Cloud] Formatting
fc5412a3 [Phillip Cloud] Checkpoint [ci skip]
cf3a5a26 [Phillip Cloud] Test multiple precisions and scales
853fced9 [Phillip Cloud] Make the parquet read/write from python test more robust
ff6eccf8 [Phillip Cloud] Add c++ formatting test for small number and small scale/precision
cd38abd4 [Phillip Cloud] Add test util
45eafe73 [Phillip Cloud] Add better test
d7a0aab4 [Phillip Cloud] Make sure we do not override the inferred type
eff7d2b5 [Phillip Cloud] Use array syntax
801626b4 [Phillip Cloud] Use FormatValue
e519c25f [Phillip Cloud] Add Decimal parquet tests

6 weeks agoARROW-1785: [Format/C++/Java] Remove VectorLayout from serialized schemas
Li Jin [Mon, 4 Dec 2017 22:52:48 +0000 (17:52 -0500)] 
ARROW-1785: [Format/C++/Java] Remove VectorLayout from serialized schemas

What's here so far removes this code from the Flatbuffers schema and the C++ implementation. This logic is a little bit entangled on the Java side, I need some help from @icexelloss or @BryanCutler or @julienledem or someone else to handle the Java refactoring. It might be easiest to preserve the ArrowVectorType/TypeLayout/VectorLayout objects for now but simply remove the Flatbuffers dependency (we do need the names of the vectors in the JSON files used for integration testing)

cc @trxcllnt since we may want to roll in the JS changes in this patch

Author: Li Jin <>
Author: Wes McKinney <>
Author: Li Jin <icexelloss@Lis-MacBook-Pro.local>

Closes #1297 from wesm/ARROW-1785 and squashes the following commits:

c1e7ea9d [Li Jin] Fix comment
43ff4e3a [Li Jin] Remove Json annotation
95e8736e [Li Jin] (Refactor) Move TypeLayout and VectorLayout from ipc.message to top level. Rename VectorLayout to BufferLayout.
31cbd486 [Li Jin] Fix
890a08d7 [Li Jin] Integration test passing
2024db55 [Wes McKinney] Remove VectorLayout from Flatbuffers, C++ implementation

6 weeks agoARROW-1885: [Java] Restore MapVector class names prior to ARROW-1710
Bryan Cutler [Mon, 4 Dec 2017 22:46:12 +0000 (17:46 -0500)] 
ARROW-1885: [Java] Restore MapVector class names prior to ARROW-1710

Changes to MapVector were not part of the intended goal for ARROW-1710 and should be restored to `NullableMapVector` -> `MapVector` -> `AbstractMapVector` as existed prior to #1341.

Author: Bryan Cutler <>

Closes #1389 from BryanCutler/java-restore-MapVector-class-ARROW-1885 and squashes the following commits:

9ff503ab [Bryan Cutler] restore MapVector class names
3d818f0e [Bryan Cutler] renamed NonNullableMapVector to MapVector
ced1705c [Bryan Cutler] renamed MapVector to NullableMapVector

6 weeks agoARROW-1879: [Python] Dask integration tests are not skipped if dask is not installed
Phillip Cloud [Mon, 4 Dec 2017 14:21:18 +0000 (09:21 -0500)] 
ARROW-1879: [Python] Dask integration tests are not skipped if dask is not installed

Author: Phillip Cloud <>

Closes #1384 from cpcloud/ARROW-1879 and squashes the following commits:

7b9503e9 [Phillip Cloud] ARROW-1879: [Python] Dask integration tests are not skipped if dask is not installed

6 weeks agoARROW-1863: [Python] PyObjectStringify could render bytes-like output for more types...
Phillip Cloud [Mon, 4 Dec 2017 09:49:17 +0000 (10:49 +0100)] 
ARROW-1863: [Python] PyObjectStringify could render bytes-like output for more types of objects

Author: Phillip Cloud <>

Closes #1385 from cpcloud/ARROW-1863 and squashes the following commits:

126d917 [Phillip Cloud] Repr when trying to convert strings
ba9a8ff [Phillip Cloud] ARROW-1863: [Python] PyObjectStringify could render bytes-like output for more types of objects

7 weeks agoARROW-1755: [C++] CMake option to link msvc crt statically
Max Risuhin [Sun, 3 Dec 2017 21:44:51 +0000 (16:44 -0500)] 
ARROW-1755: [C++] CMake option to link msvc crt statically

- CMake option `ARROW_USE_STATIC_CRT` to turn on Arrow build with statically linked MSVC C/C++ runtimes (turned OFF by default). All 3rd parties should be linked with the same version of crt.
- Debug and Release Appveyor's build jobs with `ARROW_USE_STATIC_CRT` option turned on
- Patches for lz4 and zstd libs updated to include runtime linkage selection property used by msbuild.exe

Author: Max Risuhin <>

Closes #1333 from MaxRis/ARROW-1755 and squashes the following commits:

5c9317dc [Max Risuhin] ARROW-1755: [C++] CMake option to link msvc crt statically

7 weeks agoARROW-1719: [Java] Remove accessor and mutator interface
Li Jin [Sun, 3 Dec 2017 21:43:00 +0000 (16:43 -0500)] 
ARROW-1719: [Java] Remove accessor and mutator interface

Author: Li Jin <>

Closes #1374 from icexelloss/remove-accessor-mutator and squashes the following commits:

3423ad4f [Li Jin] Remove accessor and mutator interface

7 weeks agoARROW-1878: [GLib] Add garrow_array_dictionary_encode()
Kouhei Sutou [Sun, 3 Dec 2017 21:38:39 +0000 (16:38 -0500)] 
ARROW-1878: [GLib] Add garrow_array_dictionary_encode()

Author: Kouhei Sutou <>

Closes #1381 from kou/glib-dictionary-encode and squashes the following commits:

f2da6fcb [Kouhei Sutou] Add garrow_array_dictionary_encode()

7 weeks agoARROW-1865: [C++] Do not alter number of rows attribute when removing last column...
Wes McKinney [Sun, 3 Dec 2017 21:37:22 +0000 (16:37 -0500)] 
ARROW-1865: [C++] Do not alter number of rows attribute when removing last column from Table

Author: Wes McKinney <>

Closes #1373 from wesm/ARROW-1865 and squashes the following commits:

bc7cd336 [Wes McKinney] Removing last column from a Table does not alter number of rows. Test in C++ and Python

7 weeks agoARROW-1817: [Java] Configure JsonReader to read floating point NaN values
Bryan Cutler [Fri, 1 Dec 2017 21:17:49 +0000 (16:17 -0500)] 
ARROW-1817: [Java] Configure JsonReader to read floating point NaN values

The last upgrade of the Jackson JSON library changed behavior to no longer allow reading of "NaN" values  by default.  This change configures the JSON generator and parser to allow for NaN values (unquoted) alongside standard floating point numbers.  A test was added for JSON writing/reading and modified the test for Arrow file and stream .

Author: Bryan Cutler <>

Closes #1375 from BryanCutler/java-JsonReader-all_non_numeric-ARROW-1817 and squashes the following commits:

4c4682a9 [Bryan Cutler] configure JsonWriter to write NaN not as strings, add test for read and write of float with NaN
1fa24f45 [Bryan Cutler] added conf for JacksonParser to allow NaN tokens

7 weeks agoARROW-1874: [GLib] Add garrow_array_unique()
Kouhei Sutou [Fri, 1 Dec 2017 21:14:44 +0000 (16:14 -0500)] 
ARROW-1874: [GLib] Add garrow_array_unique()

Author: Kouhei Sutou <>

Closes #1377 from kou/glib-unique and squashes the following commits:

4385e22d [Kouhei Sutou] Add garrow_array_unique()

7 weeks agoARROW-1862: [GLib] Add GArrowDictionaryArray
Kouhei Sutou [Wed, 29 Nov 2017 17:48:39 +0000 (12:48 -0500)] 
ARROW-1862: [GLib] Add GArrowDictionaryArray

Author: Kouhei Sutou <>

Closes #1365 from kou/glib-dictionary-array and squashes the following commits:

83bfa135 [Kouhei Sutou] [GLib] Add GArrowDictionaryArray

7 weeks agoARROW-1869: [JAVA] Fix LowCostIdentityHashMap name
Ivan Sadikov [Wed, 29 Nov 2017 15:54:43 +0000 (10:54 -0500)] 
ARROW-1869: [JAVA] Fix LowCostIdentityHashMap name


This PR fixes spelling error in class name for `LowCostIdentityHashMap`.
Follow-up for

Author: Ivan Sadikov <>

Closes #1372 from sadikovi/fix-low-cost-identity-hash-map and squashes the following commits:

e3529f68 [Ivan Sadikov] fix low cost identity hash map name

7 weeks agoARROW-1844: [C++] Add initial Unique benchmarks for int64, variable-length strings
Wes McKinney [Wed, 29 Nov 2017 15:43:20 +0000 (10:43 -0500)] 
ARROW-1844: [C++] Add initial Unique benchmarks for int64, variable-length strings

I also fixed a bug this surfaced in the hash table resize (unit test coverage was not adequate)

Now we have

$ ./release/compute-benchmark
Run on (8 X 4200.16 MHz CPU s)
2017-11-28 18:33:53
Benchmark                                                           Time           CPU Iterations
BM_BuildDictionary/min_time:1.000                                1352 us       1352 us       1038   2.88639GB/s
BM_BuildStringDictionary/min_time:1.000                          3994 us       3994 us        351   75.5809MB/s
BM_UniqueInt64NoNulls/16M/50/min_time:1.000/real_time           35814 us      35816 us         39   3.49023GB/s
BM_UniqueInt64NoNulls/16M/1024/min_time:1.000/real_time        119656 us     119660 us         12   1069.73MB/s
BM_UniqueInt64NoNulls/16M/10k/min_time:1.000/real_time         174924 us     174930 us          8   731.747MB/s
BM_UniqueInt64NoNulls/16M/1024k/min_time:1.000/real_time       448425 us     448440 us          3   285.443MB/s
BM_UniqueInt64WithNulls/16M/50/min_time:1.000/real_time         49511 us      49513 us         29   2.52468GB/s
BM_UniqueInt64WithNulls/16M/1024/min_time:1.000/real_time      134519 us     134523 us         10   951.541MB/s
BM_UniqueInt64WithNulls/16M/10k/min_time:1.000/real_time       191331 us     191336 us          7   668.999MB/s
BM_UniqueInt64WithNulls/16M/1024k/min_time:1.000/real_time     533597 us     533613 us          3   239.882MB/s
BM_UniqueString10bytes/16M/50/min_time:1.000/real_time         150731 us     150736 us          9    1061.5MB/s
BM_UniqueString10bytes/16M/1024/min_time:1.000/real_time       256929 us     256938 us          5   622.739MB/s
BM_UniqueString10bytes/16M/10k/min_time:1.000/real_time        414412 us     414426 us          3    386.09MB/s
BM_UniqueString10bytes/16M/1024k/min_time:1.000/real_time     1744253 us    1744308 us          1   91.7298MB/s
BM_UniqueString100bytes/16M/50/min_time:1.000/real_time        563890 us     563909 us          2   2.77093GB/s
BM_UniqueString100bytes/16M/1024/min_time:1.000/real_time      704695 us     704720 us          2   2.21727GB/s
BM_UniqueString100bytes/16M/10k/min_time:1.000/real_time       995685 us     995721 us          2   1.56927GB/s
BM_UniqueString100bytes/16M/1024k/min_time:1.000/real_time    3584108 us    3584230 us          1   446.415MB/s

We can also refactor the hash table implementations without worrying too much about whether we're making things slower

Author: Wes McKinney <>

Closes #1370 from wesm/ARROW-1844 and squashes the following commits:

638f1a11 [Wes McKinney] Decrease resize load factor to 0.5
2885c645 [Wes McKinney] Multiply bytes processed by state.iterations()
f7b36194 [Wes McKinney] Add initial Unique benchmarks for int64, strings

7 weeks agoARROW-1684: [Python] Support selecting nested Parquet fields by any path prefix
Wes McKinney [Wed, 29 Nov 2017 01:07:11 +0000 (20:07 -0500)] 
ARROW-1684: [Python] Support selecting nested Parquet fields by any path prefix

Author: Wes McKinney <>

Closes #1366 from wesm/ARROW-1684 and squashes the following commits:

e63e42aa [Wes McKinney] Support selecting nested Parquet fields by any path prefix

7 weeks agoARROW-1854: [Python] Use pickle to serialize numpy arrays of objects.
Wes McKinney [Wed, 29 Nov 2017 01:06:18 +0000 (20:06 -0500)] 
ARROW-1854: [Python] Use pickle to serialize numpy arrays of objects.

**Just posting this for discussion.** See the preceding discussion on

I think the ideal way to solve this would actually be to improve our handling of lists, which should be possible given that pickle seems to outperform us by 6x according to the benchmarks in

Note that the implementation in this PR will not handle numpy arrays of user-defined classes because it will not fall back to cloudpickle when needed.

cc @pcmoritz @wesm

Author: Wes McKinney <>
Author: Robert Nishihara <>

Closes #1360 from robertnishihara/numpyobject and squashes the following commits:

c37a0a08 [Wes McKinney] Fix flake
51915032 [Wes McKinney] Fix post rebase
43f2c805 [Wes McKinney] Add SerializationContext.clone method. Add pandas_serialization_context member that uses pickle for NumPy arrays with unsupported tensor types
c9440231 [Wes McKinney] Use pickle.HIGHEST_PROTOCOL, convert to Buffer then memoryview for more memory-efficient transport
cf719c3f [Robert Nishihara] Use pickle to serialize numpy arrays of objects.

7 weeks agoARROW-1735: [C++] Test CastKernel writing into output array with non-zero offset
Wes McKinney [Tue, 28 Nov 2017 17:33:39 +0000 (12:33 -0500)] 
ARROW-1735: [C++] Test CastKernel writing into output array with non-zero offset

This uncovered some bugs. I inspected the other kernels that are untested and while they look fine, at some point we may want to add some more extensive unit tests about this

Author: Wes McKinney <>

Closes #1369 from wesm/ARROW-1735 and squashes the following commits:

de41d929 [Wes McKinney] Test CastKernel writing into output array with non-zero offset

7 weeks agoARROW-1710: [Java] Remove Non-Nullable Vectors
Bryan Cutler [Tue, 28 Nov 2017 17:32:42 +0000 (12:32 -0500)] 
ARROW-1710: [Java] Remove Non-Nullable Vectors

This removes non-nullable vectors that are no longer part of the vector class hierarchy and renames Nullable*Vector classes to remove the Nullable prefix.

Author: Bryan Cutler <>

Closes #1341 from BryanCutler/java-nullable-vector-rename-ARROW-1710 and squashes the following commits:

7d930dc2 [Bryan Cutler] fixed realloc test
ff2120df [Bryan Cutler] clean up test
374dfcc5 [Bryan Cutler] properly rename BitVector file
6b7a85e7 [Bryan Cutler] remove old before rebase
089f7fc9 [Bryan Cutler] some minor cleanup
4e580d93 [Bryan Cutler] removed legacy BitVector
74f771f5 [Bryan Cutler] fixed remaining tests
8c5dfef6 [Bryan Cutler] fix naming in support classes
6e498e55 [Bryan Cutler] removed nullable prefix
dfed444c [Bryan Cutler] removed non-nullable vectors

7 weeks agoARROW-1783: [Python] Provide a "component" dict representation of a serialized Python...
Wes McKinney [Mon, 27 Nov 2017 21:15:16 +0000 (16:15 -0500)] 
ARROW-1783: [Python] Provide a "component" dict representation of a serialized Python object with minimal allocation

For systems (like Dask) that prefer to handle their own framed buffer transport, this provides a list of memoryview-compatible objects with minimal copying / allocation from the input data structure, which can similarly be zero-copy reconstructed to the original object.

To motivate the use case, consider a dict of ndarrays:

data = {i: np.random.randn(1000, 1000) for i in range(50)}

Here, we have:

>>> %timeit serialized = pa.serialize(data)
52.7 µs ± 1.01 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)

This is about 400MB of data. Some systems may not want to double memory by assembling this into a single large buffer, like with the `to_buffer` method:

>>> written = serialized.to_buffer()
>>> written.size

We provide a `to_components` method which contains a dict with a `'data'` field containing a list of `pyarrow.Buffer` objects. This can be converted back to the original Python object using `pyarrow.deserialize_components`:

>>> %timeit components = serialized.to_components()
73.8 µs ± 812 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)

>>> list(components.keys())
['num_buffers', 'data', 'num_tensors']

>>> len(components['data'])

>>> type(components['data'][0])


>>> %timeit recons = pa.deserialize_components(components)
93.6 µs ± 260 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)

The reason there are 101 data components (1 + 2 * 50) is that:

* 1 buffer for the serialized Union stream representing the object
* 2 buffers for each of the tensors: 1 for the metadata and 1 for the tensor body. The body is separate so that this is zero-copy from the input

Next step after this is ARROW-1784 which is to transport a pandas.DataFrame using this mechanism

cc @pitrou @jcrist @mrocklin

Author: Wes McKinney <>

Closes #1362 from wesm/ARROW-1783 and squashes the following commits:

4ec5a89f [Wes McKinney] Add missing decref on error
e8c76d42 [Wes McKinney] Acquire GIL in GetSerializedFromComponents
1d2e0e27 [Wes McKinney] Fix function documentation
fffc7bb6 [Wes McKinney] Typos, add deserialize_components to API
50d2fee5 [Wes McKinney] Finish componentwise serialization roundtrip
58174dde [Wes McKinney] More progress, stubs for reconstruction
b1e31a34 [Wes McKinney] Draft GetTensorMessage
337e1d29 [Wes McKinney] Draft SerializedPyObject::GetComponents
598ef335 [Wes McKinney] Tweak