Как обновить трубопровод Kedro вместо его замены?Python

Программы на Python
Anonymous
Как обновить трубопровод Kedro вместо его замены?

Сообщение Anonymous »

У меня есть набор данных, который мне приходится увеличивать при каждом запуске, но вместо этого он заменяет его.
Каталог является обобщенным, за исключением файла result.csv, который представляет собой объединенный файл всех остальных файлов, созданных конвейерами.

Код: Выделить всё

"{namespace}.{dataset_name}@csv":
type: pandas.CSVDataset
filepath: data/01_raw/{namespace}/{dataset_name}.csv
versioned: True

"{namespace}.result":
type: pandas.CSVDataset
filepath: data/01_raw/{namespace}/result.csv
В файле nodes.py помимо парсеров и обработчиков результатов я использую простую функцию конкатенации.

Код: Выделить всё

def concatenate_csvs(*dataframes):
concatenated_df = pd.concat(dataframes, ignore_index=True)
return concatenated_df
а на конвейерах я просто вызываю все выходные данные предыдущих конвейеров. Базовая труба:

Код: Выделить всё

def create_pipeline(**kwargs):

pipe_the_hacker_news = pipeline(
[
node(
func=get_links,
inputs=["params:the_hacker_news"],
outputs="the_hacker_news_links",
name="the_hacker_news_links_node",
),
node(
func=scraper_the_hacker_news,
inputs="the_hacker_news_links",
outputs="the_hacker_news@csv",
name="the_hacker_news_scraper_node",
)
],
namespace="cybersecurity_news"
)
Объединено:

Код: Выделить всё

    pipe_concat = pipeline(
[
node(
func=concatenate_csvs,
inputs=[
"the_hacker_news@csv",
"tech_republic@csv",
"thecyberexpress_news@csv",
"welivesecurity_news@csv",
"davinciforensics_news@csv",
"varutra_news@csv",
"attcybersecurity_news@csv",
"mcafee_news@csv",
"nist_news@csv",
"avast_news@csv",
"amazon_news@csv",
"qualys_news@csv",
"veracode_news@csv",
"gbhackers_news@csv",
"hackingarticles_news@csv",
"sentinelone_news@csv",
"securityintelligence_news@csv",
"tripwire_news@csv",
"securelist_news@csv",
"grahamcluley_news@csv",
"infosecurity_news@csv",
"olukaii_news@csv",
"cyble_news@csv",
"bleepingcomputer_news@csv",
"threatinsight_news@csv",
"zonealarm_news@csv"],
outputs="result",
name="concatenate_csvs_node",
),
],
namespace="cybersecurity_news"
)

Как я могу сделать так, чтобы мой файл вместо замены увеличивался при каждом запуске, избегая дублирования?
Я уже пробовал использовать:< /p>

Код: Выделить всё

  save_args:
mode: a
и ничего не произошло, попробовал изменить прямо на nodes.py:

Код: Выделить всё

def concatenate_csvs(*dataframes):
concatenated_df = pd.concat(dataframes, ignore_index=True)

file_path = "/path/cybersecurity_news/result.csv"
existing_df = pd.read_csv(file_path)
concatenated_df = pd.concat([existing_df, concatenated_df], ignore_index=True)
concatenated_df.to_csv(file_path, index=False)
return concatenated_df
но использовалась только предыдущая версия, а не обновлялась.

Подробнее здесь: https://stackoverflow.com/questions/786 ... placing-it

Вернуться в «Python»