Дизайн проекта / FS-макет для больших проектов django [закрыто]

Это соответствует тому, что JP Mercier изначально предложил об использовании Pandas, но с серьезной модификацией: если вы читаете данные в Pandas в кусках, это должно быть более податливым. Смысл, что вы можете анализировать гораздо больший файл, чем Pandas может фактически обрабатывать как единый кусок и передавать его Spark в меньших размерах. (Это также отвечает на комментарий о том, почему хотелось бы использовать Spark, если они все равно могут загружать все в Pandas.)

from pyspark import SparkContext
from pyspark.sql import SQLContext
import pandas as pd

sc = SparkContext('local','example')  # if using locally
sql_sc = SQLContext(sc)

Spark_Full = sc.emptyRDD()
chunk_100k = pd.read_csv("Your_Data_File.csv", chunksize=100000)
# if you have headers in your csv file:
headers = list(pd.read_csv("Your_Data_File.csv", nrows=0).columns)

for chunky in chunk_100k:
    Spark_Full +=  sc.parallelize(chunky.values.tolist())

YourSparkDataFrame = Spark_Full.toDF(headers)
# if you do not have headers, leave empty instead:
# YourSparkDataFrame = Spark_Full.toDF()
YourSparkDataFrame.show()

41
задан JAL 8 December 2015 в 15:31
поделиться

5 ответов

Главные инструкции подобны любому другому большому проекту кода. Приложения должны обратиться к единственной, ясно определенной ответственности. Имя "приложение" является неправильным употреблением; приложений Django нужно думать больше как допускающие повторное использование компоненты, которые могут быть включены вместе для создавания реального приложения. Тесты для каждого приложения должны содержаться в рамках того приложения. Приложения должны быть разъединены друг от друга максимально как можно больше, но ясно будут зависимости, таким образом, цель должна будет состоять в том, чтобы сохранить граф зависимостей максимально простым и нормальным.

я предпочитаю сохранять все шаблоны для проекта в соответствии с единственным шаблонным каталогом всего проекта, с подкаталогом для каждого приложения (использующий шаблонный подкаталог для каждого приложения очень сильное соглашение в Django, поскольку это избегает шаблонных коллизий имени между приложениями). Причина единственного шаблонного каталога всего проекта состоит в том, что шаблоны, шаблонные деревья наследования и имена блока могут быть довольно определенными для проекта, таким образом, трудно обеспечить шаблоны приложений "по умолчанию", которые могут включить к любому проекту. Были некоторые попытки обосноваться на стандартных соглашениях о присвоении имен для основы, по всему сайту обрабатывает по шаблону и блоки, которые они определяют, но я не видел, что стандарт появляется все же (путь они переделывают вещи в , Pinax является, вероятно, самым близким, мы имеем к стандарту).

Ре "представляет воплощение в виде строки", если Вы имеете в виду i18n и l10n, у Django есть мощная поддержка этого и стандартных мест, куда это помещает .po файлы - проверяют эти документы .

17
ответ дан Carl Meyer 8 December 2015 в 15:31
поделиться
  • 1
    Потрясающий! Я просто должен был измениться = strict на = false. Спасибо! – Ivan 5 August 2009 в 18:28

Эта страница делает хорошее задание обращения к некоторым моим вопросам: http://www.b-list.org/weblog/2006/sep/10/django-tips-laying-out-application/

Конкретно:

  1. Для определения пользовательских тегов шаблона или фильтров необходимо создать подкаталог в application’s каталоге, названном templatetags, и это должно содержать файл, названный __ init __. py так, чтобы это могло быть импортировано как модуль Python.
  2. Для определения модульных тестов, которые будут автоматически замечены средой тестирования Django’s, помещает их в модуль, названный тестами (который может быть или файлом, названным tests.py или каталогом, названным тестами). Среда тестирования также найдет любой doctests в том модуле, но предпочтительное место для тех является, конечно, docstrings классов или функций they’re разработанный для тестирования.
  3. Для обеспечения пользовательского SQL, который будет сразу выполнен после того, как приложение установлено, создайте подкаталог, названный sql в application’s каталоге; имена файлов должны совпасть с названиями моделей, таблицы которых they’ll воздействуют на; например, если у Вас есть приложение, названное блогом, содержащим модель под названием Запись, тогда файл sql/entry.sql в app’s каталоге может использоваться, чтобы изменить или вставить данные в таблицу записей, как только it’s создал.

примечание о tests.py и тестах (каталог) также содержит для моделей, который помогает решить проблему наличия пути ко многим тестам (или модели) для одного файла.

я все еще хотел бы видеть некоторые примеры / предложения для приложения/проекта ломаются, и большие django сайты та работа хорошо.

6
ответ дан rcreswick 8 December 2015 в 15:31
поделиться

проект Pinax создается вокруг идеи маленьких допускающих повторное использование приложений, которые легко объединены в проект. Они использовали Облако проекта 27 как демонстрационный проект.

проект Django я продолжаю работать (названный Basie. Это пред0.1, таким образом, никакая ссылка все же.) пытается следовать модели Pinax, и до сих пор она удается довольно хорошо.

3
ответ дан bwinton 8 December 2015 в 15:31
поделиться

Мой текущий макет происходит от меня желающий иметь тестовую версию моих сайтов. Это означает иметь два проекта для каждого сайта, так как им нужны различные конфигурации, и вынуждает меня переместить все приложения из проектов.

я создал две папки: $APP_ROOT/devel и $APP_ROOT/prod. Они содержат все приложения. Используя управление исходным кодом (в моем мерзавце случая) у меня есть приложения в дьяволе в ГЛАВНОМ пересмотре, в то время как приложения в напоминании заблокированы к тегу НАПОМИНАНИЯ. Шаблоны также имеют свою собственную папку с тем же расположением как приложения.

Теперь я в состоянии сделать всю свою разработку в папке devel-приложений и шаблонной папке соответствия. Когда у меня есть что-то, чем я доволен, я отмечаю тот пересмотр и обновляю напоминание.

1
ответ дан Alf 8 December 2015 в 15:31
поделиться
9
ответ дан 27 November 2019 в 00:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: