ArrowInvalid when mapping dataset with missing values
{'login': 'uniquefine', 'id': 12694730, 'node_id': 'MDQ6VXNlcjEyNjk0NzMw', 'avatar_url': 'https://avatars.githubusercontent.com/u/12694730?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/uniquefine', 'html_url': 'https://github.com/uniquefine', 'followers_url': 'https://api.github.com/users/uniquefine/followers', 'following_url': 'https://api.github.com/users/uniquefine/following{/other_user}', 'gists_url': 'https://api.github.com/users/uniquefine/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/uniquefine/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/uniquefine/subscriptions', 'organizations_url': 'https://api.github.com/users/uniquefine/orgs', 'repos_url': 'https://api.github.com/users/uniquefine/repos', 'events_url': 'https://api.github.com/users/uniquefine/events{/privacy}', 'received_events_url': 'https://api.github.com/users/uniquefine/received_events', 'type': 'User', 'site_admin': False}
[{'id': 1935892857, 'node_id': 'MDU6TGFiZWwxOTM1ODkyODU3', 'url': 'https://api.github.com/repos/huggingface/datasets/labels/bug', 'name': 'bug', 'color': 'd73a4a', 'default': True, 'description': "Something isn't working"}]
[]
['Hi ! It fails because of the feature type inference.\r\n\r\nBecause the first 1000 examples all have null values in the "match" field, then it infers that the type for this field is `null` type before writing the data on disk. But as soon as it tries to map an example with a non-null "match" field, then it fails.\r\n\r\nTo fix that you can either:\r\n- increase the writer_batch_size to >2000 (default is 1000) so that some non-null values will be in the first batch written to disk\r\n```python\r\ndatasets = datasets.map(lambda e: {\'labels\': e[\'match\']}, remove_columns=[\'id\'], writer_batch_size=2000)\r\n```\r\n- OR force the feature type with:\r\n```python\r\nfrom datasets import Features, Value\r\n\r\nfeatures = Features({\r\n    \'conflict\': Value(\'int64\'),\r\n    \'date\': Value(\'string\'),\r\n    \'headline\': Value(\'string\'),\r\n    \'match\': Value(\'float64\'),\r\n    \'label\': Value(\'float64\')\r\n})\r\ndatasets = datasets.map(lambda e: {\'labels\': e[\'match\']}, remove_columns=[\'id\'], features=features)\r\n```']
## Describe the bug
I encountered an `ArrowInvalid` when mapping dataset with missing values. 
Here are the files for a minimal example. The exception is only thrown when the first line in the csv has a missing value (if you move the last line to the top it isn't thrown).
[data_small.csv](https://github.com/huggingface/datasets/files/7037838/data_small.csv)
[data.csv](https://github.com/huggingface/datasets/files/7037842/data.csv)

## Steps to reproduce the bug
```python
from datasets import load_dataset

datasets = load_dataset("csv", data_files=['data_small.csv'])

datasets = datasets.map(lambda e: {'labels': e['match']},
                        remove_columns=['id'])
```

## Expected results
No error

## Actual results
```
File "pyarrow/error.pxi", line 84, in pyarrow.lib.check_status
pyarrow.lib.ArrowInvalid: Invalid null value
```

## Environment info
- `datasets` version: 1.5.0
- Platform: Linux-5.11.0-25-generic-x86_64-with-glibc2.29
- Python version: 3.8.10
- PyTorch version (GPU?): 1.7.1+cpu (False)
- Tensorflow version (GPU?): 2.4.1 (False)
- Using GPU in script?: no
- Using distributed or parallel set-up in script?: no

{'url': 'https://api.github.com/repos/huggingface/datasets/issues/2831/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}