Я использую Dataiku DSS для проекта. Среда использует pandas==0.23.4
и говорит, что это невозможно обновить:
# These are the packages required for the selected core features.
# These packages cannot be removed nor reversioned
Чтобы использовать modin
с dask
в качестве бэкэнда для pandas
, мне пришлось установить modin==0.3
для поддержки этого версия pandas
. Все это работало хорошо, и я видел очень впечатляющие времена выполнения по сравнению с голым pandas
. Однако затем я выполнил некоторый код и получил следующую трассировку стека:
---------------------------------------------------------------------------
NotImplementedError Traceback (most recent call last)
<ipython-input-36-d10eb0fc575f> in <module>
3 # modin[ray]:
4 start = time.time()
----> 5 output_result = process_with_sampling()
6 runtime(start)
<ipython-input-35-090b75613bb5> in process_with_sampling(loc_to_select_)
11 output_concat,
12 pd.DataFrame(df_limited.groupby('id')['attributed_conversions'].apply(sum).iloc[0]).fillna('')
---> 13 ],axis=0)
14 return output_concat
~/dataiku/dss_data/code-envs/python/victor/lib/python3.6/site-packages/modin/pandas/concat.py in concat(objs, axis, join, join_axes, ignore_index, keys, levels, names, verify_integrity, sort, copy)
116 verify_integrity=False,
117 copy=True,
--> 118 sort=False,
119 )
120 result_df = DataFrame(query_compiler=new_query_compiler)
~/dataiku/dss_data/code-envs/python/victor/lib/python3.6/site-packages/modin/data_management/query_compiler/pandas_query_compiler.py in concat(self, axis, other, **kwargs)
298 Concatenated objects.
299 """
--> 300 return self._append_list_of_managers(other, axis, **kwargs)
301
302 def _append_list_of_managers(self, others, axis, **kwargs):
~/dataiku/dss_data/code-envs/python/victor/lib/python3.6/site-packages/modin/data_management/query_compiler/pandas_query_compiler.py in _append_list_of_managers(self, others, axis, **kwargs)
311 ignore_index = kwargs.get("ignore_index", False)
312 new_self, to_append, joined_axis = self.copartition(
--> 313 axis ^ 1, others, join, sort
314 )
315 new_data = new_self.concat(axis, to_append)
~/dataiku/dss_data/code-envs/python/victor/lib/python3.6/site-packages/modin/data_management/query_compiler/pandas_query_compiler.py in copartition(self, axis, other, how_to_join, sort)
417
418 reindexed_self, reindexed_other = reindexed_self.copartition_datasets(
--> 419 axis, other[i].data, reindex_left, reindex_right
420 )
421 reindexed_other_list.append(reindexed_other)
~/dataiku/dss_data/code-envs/python/victor/lib/python3.6/site-packages/modin/engines/base/block_partitions.py in copartition_datasets(self, axis, other, left_func, right_func)
299 axis,
300 right_func,
--> 301 new_self.block_lengths if axis == 0 else new_self.block_widths,
302 )
303 return new_self, new_other
~/dataiku/dss_data/code-envs/python/victor/lib/python3.6/site-packages/modin/engines/base/block_partitions.py in manual_shuffle(self, axis, shuffle_func, lengths)
1061 partitions = self.column_partitions
1062 func = self.preprocess_func(shuffle_func)
-> 1063 result = np.array([part.shuffle(func, lengths) for part in partitions])
1064 return self.__constructor__(result) if axis else self.__constructor__(result.T)
1065
~/dataiku/dss_data/code-envs/python/victor/lib/python3.6/site-packages/modin/engines/base/block_partitions.py in <listcomp>(.0)
1061 partitions = self.column_partitions
1062 func = self.preprocess_func(shuffle_func)
-> 1063 result = np.array([part.shuffle(func, lengths) for part in partitions])
1064 return self.__constructor__(result) if axis else self.__constructor__(result.T)
1065
~/dataiku/dss_data/code-envs/python/victor/lib/python3.6/site-packages/modin/engines/base/axis_partition.py in shuffle(self, func, lengths, **kwargs)
52 A list of `BaseRemotePartition` objects.
53 """
---> 54 raise NotImplementedError("Must be implemented in children classes")
55
56 # Child classes must have these in order to correctly subclass.
NotImplementedError: Must be implemented in children classes
Есть ли обходной путь для этого? Я думал, что modin
должен вернуться обратно к голому pandas
для любых методов, которые не реализованы?
Редактировать: Это строка в исходном коде modin
, в которой возникает ошибка.
Редактировать 2: там есть исходный код 0.3 похоже, что дочерние классы не реализованы для BaseFrameAxisPartition
. Я все еще хотел бы найти какое-то решение этой проблемы, поскольку я не уверен, возможно ли вообще обновить pandas
в DSS.