使用 dask 将 CSV 文件转换为 parquet(jupyter 内核崩溃)

convert CSV file to parquet using dask (jupyter kernel crashes)

我正在尝试使用 jupyter notebook 将一个相当大的 CSV 文件转换为 parquet 格式。但是,笔记本在尝试转换时会重新启动。

由于 dask 会增加内存大小并加载适合内存的数据块,因此在执行大于内存的数据集时不应发生此错误。 (内核崩溃背后的原因是内存过载)。我正在 运行 将这个内核快速安装在一台机器上。

代码如下


import dask
import dask.dataframe as dd
from dask.distributed import Client
client = Client()

merchant = dd.read_csv('/home/michael/Elo_Merchant/merchants.csv')
merchant.to_parquet('merchants.parquet') # kernel restarts when run this line.

更新:

我使用终端 运行 同样的东西并得到了这个错误。

>>>merchant.to_parquet('merchants.parquet')
2019-03-06 13:22:29.293680: F tensorflow/core/platform/cpu_feature_guard.cc:37] The TensorFlow library was compiled to use AVX instructions, but these aren't available on your machine.
Aborted
$/usr/lib/python3.5/multiprocessing/semaphore_tracker.py:129: UserWarning: semaphore_tracker: There appear to be 12 leaked semaphores to clean up at shutdown
  len(cache))

谁能帮我解决这个问题

谢谢

迈克尔

我找到了问题的解决方案。我将 parquet 转换引擎更改为 fastparquet。代码如下。我之前只安装了 pyarrow。如果两者都安装了 fastparquet 将是默认引擎。不过,我在代码中展示了,否则,它将与上面的代码相同。

import dask.dataframe as dd

merchant = dd.read_csv('/home/michael/Elo_Merchant/merchants.csv')
merchant.to_parquet('merchants.parquet', engine='fastparquet') #Works 

希望对您有所帮助

谢谢

迈克尔