Issue: Do we need to implement `_prepare_split`?

Comment:
ok, I think I was assigning the output of `builder.download_and_prepare` but it's an inplace op, so that explains the `NoneType` i was getting back. Now I'm getting:

```
ArrowInvalid                              Traceback (most recent call last)
<ipython-input-7-3ed50fb87c70> in <module>
----> 1 ds = dataset_builder.as_dataset()

/databricks/python/lib/python3.8/site-packages/datasets/builder.py in as_dataset(self, split, run_post_process, ignore_verifications, in_memory)
   1020 
   1021         # Create a dataset for each of the given splits
-> 1022         datasets = map_nested(
   1023             partial(
   1024                 self._build_single_dataset,

/databricks/python/lib/python3.8/site-packages/datasets/utils/py_utils.py in map_nested(function, data_struct, dict_only, map_list, map_tuple, map_numpy, num_proc, parallel_min_length, types, disable_tqdm, desc)
    442         num_proc = 1
    443     if num_proc <= 1 or len(iterable) < parallel_min_length:
--> 444         mapped = [
    445             _single_map_nested((function, obj, types, None, True, None))
    446             for obj in logging.tqdm(iterable, disable=disable_tqdm, desc=desc)

/databricks/python/lib/python3.8/site-packages/datasets/utils/py_utils.py in <listcomp>(.0)
    443     if num_proc <= 1 or len(iterable) < parallel_min_length:
    444         mapped = [
--> 445             _single_map_nested((function, obj, types, None, True, None))
    446             for obj in logging.tqdm(iterable, disable=disable_tqdm, desc=desc)
    447         ]

/databricks/python/lib/python3.8/site-packages/datasets/utils/py_utils.py in _single_map_nested(args)
    344     # Singleton first to spare some computation
    345     if not isinstance(data_struct, dict) and not isinstance(data_struct, types):
--> 346         return function(data_struct)
    347 
    348     # Reduce logging to keep things readable in multiprocessing with tqdm

/databricks/python/lib/python3.8/site-packages/datasets/builder.py in _build_single_dataset(self, split, run_post_process, ignore_verifications, in_memory)
   1051 
   1052         # Build base dataset
-> 1053         ds = self._as_dataset(
   1054             split=split,
   1055             in_memory=in_memory,

/databricks/python/lib/python3.8/site-packages/datasets/builder.py in _as_dataset(self, split, in_memory)
   1120         """
   1121         cache_dir = self._fs._strip_protocol(self._output_dir)
-> 1122         dataset_kwargs = ArrowReader(cache_dir, self.info).read(
   1123             name=self.name,
   1124             instructions=split,

/databricks/python/lib/python3.8/site-packages/datasets/arrow_reader.py in read(self, name, instructions, split_infos, in_memory)
    236             msg = f'Instruction "{instructions}" corresponds to no data!'
    237             raise ValueError(msg)
--> 238         return self.read_files(files=files, original_instructions=instructions, in_memory=in_memory)
    239 
    240     def read_files(

/databricks/python/lib/python3.8/site-packages/datasets/arrow_reader.py in read_files(self, files, original_instructions, in_memory)
    257         """
    258         # Prepend path to filename
--> 259         pa_table = self._read_files(files, in_memory=in_memory)
    260         # If original_instructions is not None, convert it to a human-readable NamedSplit
    261         if original_instructions is not None:

/databricks/python/lib/python3.8/site-packages/datasets/arrow_reader.py in _read_files(self, files, in_memory)
    192             f["filename"] = os.path.join(self._path, f["filename"])
    193         for f_dict in files:
--> 194             pa_table: Table = self._get_table_from_filename(f_dict, in_memory=in_memory)
    195             pa_tables.append(pa_table)
    196         pa_tables = [t for t in pa_tables if len(t) > 0]

/databricks/python/lib/python3.8/site-packages/datasets/arrow_reader.py in _get_table_from_filename(self, filename_skip_take, in_memory)
    327             filename_skip_take["take"] if "take" in filename_skip_take else None,
    328         )
--> 329         table = ArrowReader.read_table(filename, in_memory=in_memory)
    330         if take == -1:
    331             take = len(table) - skip

/databricks/python/lib/python3.8/site-packages/datasets/arrow_reader.py in read_table(filename, in_memory)
    348         """
    349         table_cls = InMemoryTable if in_memory else MemoryMappedTable
--> 350         return table_cls.from_file(filename)
    351 
    352 

/databricks/python/lib/python3.8/site-packages/datasets/table.py in from_file(cls, filename, replays)
   1034     @classmethod
   1035     def from_file(cls, filename: str, replays=None):
-> 1036         table = _memory_mapped_arrow_table_from_file(filename)
   1037         table = cls._apply_replays(table, replays)
   1038         return cls(table, filename, replays)

/databricks/python/lib/python3.8/site-packages/datasets/table.py in _memory_mapped_arrow_table_from_file(filename)
     48 def _memory_mapped_arrow_table_from_file(filename: str) -> pa.Table:
     49     memory_mapped_stream = pa.memory_map(filename)
---> 50     opened_stream = pa.ipc.open_stream(memory_mapped_stream)
     51     pa_table = opened_stream.read_all()
     52     return pa_table

/databricks/python/lib/python3.8/site-packages/pyarrow/ipc.py in open_stream(source)
    152     reader : RecordBatchStreamReader
    153     """
--> 154     return RecordBatchStreamReader(source)
    155 
    156 

/databricks/python/lib/python3.8/site-packages/pyarrow/ipc.py in __init__(self, source)
     43 
     44     def __init__(self, source):
---> 45         self._open(source)
     46 
     47 

/databricks/python/lib/python3.8/site-packages/pyarrow/ipc.pxi in pyarrow.lib._RecordBatchStreamReader._open()

/databricks/python/lib/python3.8/site-packages/pyarrow/error.pxi in pyarrow.lib.pyarrow_internal_check_status()

/databricks/python/lib/python3.8/site-packages/pyarrow/error.pxi in pyarrow.lib.check_status()

ArrowInvalid: Tried reading schema message, was null or length 0
```