Simple Vectorized Python UDFs using Arrow

Details

Description

Using Arrow, Python UDFs can be evaluated in vectorized form by using the column data as Pandas.Series. This will offer a performance gain by computing the return column data in one operation instead of iterating over each row to calculate a single element and appending to a list, as is currently done. The existing Python UDF api can be used to implement this, which specifies the return type, and since not all functions may be able to be vectorized there would need to be a way to enable this optimizaiton, such as a SQLConf.

This is designed as a preliminary step for the existing SPIP: Vectorized UDFs in Python SPARK-21190 that could be used as a basis for whatever expanded API is decided upon there.