Я нашел ссылку, обсуждающую эту проблему. https://github.com/databricks/koalas/issues/1280
Если число строк, применяемых функцией, меньше 1,000
(значение по умолчанию), то для выполнения операции будет вызван pandas dataframe
.
Пользовательская функция, указанная выше my_prep
, применяется к каждой строке, поэтому использовалось одноядерное pandas
.
Чтобы заставить его работать в режиме pyspark (параллельно), Пользователь должен изменить конфигурацию, как показано ниже.
import databricks.koalas as ks
ks.set_option('compute.default_index_type','distributed') # when .head() call is too slow
ks.set_option('compute.shortcut_limit',1) # Koalas will apply pyspark
Кроме того, явное указание типа (подсказка типа) в пользовательской функции заставит Koalas не использовать go путь быстрого доступа и будет параллельным.
def my_prep(row) -> string:
return row
kdf['my_column'].apply(my_prep)