Один способ сделать это с помощью pyspark & lt; 1.6, который, к сожалению, не поддерживает определяемую пользователем агрегированную функцию:
byUsername = df.rdd.reduceByKey(lambda x, y: x + ", " + y)
, и если вы хотите снова сделать это:
sqlContext.createDataFrame(byUsername, ["username", "friends"])
Начиная с версии 1.6, вы может использовать collect_list , а затем присоединиться к созданному списку:
from pyspark.sql import functions as F
from pyspark.sql.types import StringType
join_ = F.udf(lambda x: ", ".join(x), StringType())
df.groupBy("username").agg(join_(F.collect_list("friend").alias("friends"))
Если Ваша программа использует много ресурсов окон, это могла бы быть нехватка "кучи" Ресурса.
существует ключ реестра, который может быть увеличен для повышения размера "кучи" для XP. Для Vista Microsoft уже устанавливает значение по умолчанию выше. Я рекомендую изменить значение по умолчанию 3072 по крайней мере на 8 192.
Эта информация документируется в База знаний мс (или поиск "Из Памяти"). Дополнительные детали относительно значений параметров могут быть найдены в статье KB184802 .
, я предполагаю, что Вы читаете статью базы знаний, но основная информация об изменении:
Редактор реестра Выполнения (REGEDT32.EXE).
От поддерева HKEY_ LOCAL_MACHINE, перейдите к следующему ключу:
\System\CurrentControlSet\Control\Session Manager\SubSystem
На правой стороне экрана дважды щелкают по ключу:
windows
На всплывающем окне Вы будете видеть очень длинное выбранное поле. Переместите курсор около начала строки, ища это (значения могут варьироваться):
SharedSection=1024,3072,512
SharedSection указывает Систему и настольную "кучу" с помощью следующего формата: SharedSection=xxxx,yyyy,zzz
то, где xxxx
определяет максимальный размер "кучи" в масштабе всей системы (в килобайтах), yyyy
, определяет размер на настольную "кучу", и zzz
определяет размер настольной "кучи" для "неинтерактивной" станции окна.
Изменение ТОЛЬКО эти yyyy
значение к 8 192 (или больше) и нажимают OK.
Выход Редактор реестра и перезагрузка ПК для изменения для вступления в силу.
Удача.
Могли быть ошибки в компиляторе, это - справедливая ставка, это - что-то в Вашем приложении, которое вызывает проблему. Могло случиться так, что Ваше приложение пропускает дескрипторы окна или некоторый другой объект GUI как перья/кисти? Это могло быть причиной.
Вы можете использовать Desktop Heap Monitor от Microsoft для просмотра статистики кучи (использовать% и т. Д.), Он доступен по адресу:
Я заметил эту ошибку (Системная ошибка. Код: 8. Недостаточно памяти ...) недавно при использовании кода Твена, это происходило на моем компьютере, а не на моем коллеге, и единственное реальная разница между нашими машинами заключается в том, что я использую экран ноутбука в качестве второго монитора, поэтому мои общие размеры рабочего стола больше.
Я нашел документацию по проблеме, упомянутой выше Стивом Блэком, но я нашел способ (который устранил ошибка на моей машине, по крайней мере), которая не требует редактирования реестра:
Старый код использовал
DC := GetDC(Owner.VirtualWindow);
// ...
ReleaseDC(Owner.VirtualWindow, DC);
, и я обнаружил, что замена его на это избавила меня от ошибок
DC := CreateCompatibleDC(Owner.VirtualWindow);
// ...
DeleteDC(DC);
Я не знаю, это имеет отношение к вашей проблеме, но может быть полезным для других в будущем.