Pyspark Dataframe не возвращает все строки при преобразовании в pandas с помощью функции toPandas или Pyarrow в Pyspark - PullRequest
0 голосов
/ 18 июня 2019

При попытке преобразовать фрейм данных pyspark в фрейм данных pandas, используя функцию стрелки, конвертируется только половина строк. Pyspark df содержит 170000 строк.

>> spark.conf.set("spark.sql.execution.arrow.enabled", "true")
>> result_pdf = train_set.select("*").toPandas()
>> result_pdf returns only 65000 rows.

Я попытался установить и обновить pyarrow, используя следующие команды:

>> conda install -c conda-forge pyarrow
>> pip install pyarrow
>> pip install pyspark[sql]

, а затем запустить

>> spark.conf.set("spark.sql.execution.arrow.enabled", "true")
>> result_pdf = train_set.select("*").toPandas()
>>spark.conf.set("spark.sql.execution.arrow.enabled", "true")
>> result_pdf = train_set.select("*").toPandas()

Я получаю следующее предупреждение каждый раз при конвертации:

C: \ Users \ MUM1342.conda \ envs \ змей \ Lib \ сайт-пакеты \ pyarrow__init __ пй:. 152: UserWarning: pyarrow.open_stream устарела, пожалуйста, используйте pyarrow.ipc.open_stream warnings.warn ("pyarrow.open_stream is устарел, пожалуйста, используйте C: \ Users \ MUM1342.conda \ envs \ змейки \ Lib \ сайт-пакеты \ pyspark \ SQL \ dataframe.py: 2138: UserWarning: toPandas попытался оптимизировать Arrow, потому что «spark.sql.execution.arrow.enabled» имеет значение true, но достиг ошибка ниже и не может продолжаться. Обратите внимание, что «spark.sql.execution.arrow.fallback.enabled» не имеет эффекта при сбоях в середине вычислений.

Фактический объем производства:

> train_set.count
> 170256
> result_pdf.shape
> 6500

Ожидаемый результат:

> train_set.count
> 170256
> result_pdf.shape
> 170256

1 Ответ

0 голосов
/ 21 июня 2019

Пожалуйста, попробуйте ниже, если это работает

Включить передачу столбчатых данных на основе стрелок

spark.conf.set("spark.sql.execution.arrow.enabled", "true")
...