Erstellen Sie Ihre eigenen Big Data in Python zur Validierung

Ich wollte sofort überprüfen, wie stark sich die Verarbeitungszeit zwischen Hadoop und RDB unterscheiden würde, und habe daher meine eigenen Big Data in Python erstellt.

Datenstruktur

Tabelle Erläuterung
Der Umsatz 100,000,000 Verkaufsdetails.
Geschäft 1,000,000 Geschäfte.
Bereich 1,000 Ladenflächen.
Produkt 10,000,000 Artikel.
Einstufung 10,000 Produktkategorien.

er.png

Big Data-Generierung

$ cd ~
$ ls
generate_big_data.py
$ sudo apt install python3 -y
$ python3 generate_big_data.py
$ du -h ./*
184K    /home/vagrant/category.csv
8.0K    /home/vagrant/generate_big_data.py
122M    /home/vagrant/product.csv
3.8G    /home/vagrant/sales.csv
11M     /home/vagrant/shop.csv

Programm

Ich habe versucht, jede festgelegte Anzahl von Fällen in eine Datei auszuspucken, damit sie nicht zu OOM wird.

import random
import datetime
import time

#Anzahl der Geschäfte: 1,000,000
SHOP_CNT = 1000000
#Anzahl der Bereiche: 1,000
AREA_CNT = 1000
#Anzahl der Teile: 10,000,000
PRODCUT_CNT = 10000000
#Kategorien: 10,000
CATEGORY_CNT = 10000
#Anzahl der Verkäufe: 100,000,000
SALES_CNT = 100000000
#Maximaler Preis: 100,000
PRICE_MAX = 100000
#Maximale Anzahl von Einkäufen: 100
COUNT_MAX = 100

SHOP_DST = 'shop.csv'
AREA_DST = 'area.txt'
PRODUCT_DST = 'product.csv'
CATEGORY_DST = 'category.csv'
SALES_DST = 'sales.csv'

# Table: shop
# Column: id,area_code
# id: 1 - 1,000,000
# area_code: 1 - 1,000

print('{} start: generate shop csv'.format(datetime.datetime.now().strftime('%Y/%m/%d %H:%M:%S')))

start = time.time()

rows = []

# header
# rows.append('id,area_code\n')

for i in range(SHOP_CNT):
    shop_id = str(i + 1)
    area_code = str(random.randrange(1, AREA_CNT, 1))
    rows.append('{},{}\n'.format(shop_id, area_code))
    # 100,Ausgabe alle 000
    if((i + 1) % 100000 == 0):
        cnt = i + 1
        print('shop rows: {}'.format(cnt))
        with open(SHOP_DST, 'a', encoding='utf-8') as f:
            f.writelines(rows)
        rows = []

elapsed_time = time.time() - start      

print('{} finish: generate shop csv({} sec)'.format(datetime.datetime.now().strftime('%Y/%m/%d %H:%M:%S'), elapsed_time))


# Table: area
# Column: area_code,area_name
# area_code: 1 - 1,000
# area_name: area_0 - area_1000

print('{} start: generate area csv'.format(datetime.datetime.now().strftime('%Y/%m/%d %H:%M:%S')))

start = time.time()

rows = []

# header
# rows.append('area_code,area_name\n')

for i in range(AREA_CNT):
    area_code = str(i + 1)
    area_name = 'area_' + str(i + 1)
    rows.append('{},{}\n'.format(area_code, area_name))
    #Ausgabe alle 100 Fälle
    if((i + 1) % 100 == 0):
        cnt = i + 1
        print('area rows: {}'.format(cnt))
        with open(AREA_DST, 'a', encoding='utf-8') as f:
            f.writelines(rows)
        rows = []

elapsed_time = time.time() - start      

print('{} finish: generate area csv({} sec)'.format(datetime.datetime.now().strftime('%Y/%m/%d %H:%M:%S'), elapsed_time))


# Table: product
# Column: id,category_code
# id: 1 - 10,000,000
# category_code: 1 - 10,000

print('{} start: generate product csv'.format(datetime.datetime.now().strftime('%Y/%m/%d %H:%M:%S')))

start = time.time()

rows = []

# header
# rows.append('id,category_code\n')

for i in range(PRODCUT_CNT):
    product_id = str(i + 1)
    category_code = str(random.randrange(1, CATEGORY_CNT, 1))
    rows.append('{},{}\n'.format(product_id, category_code))
    # 1,000,Ausgabe alle 000
    if((i + 1) % 1000000 == 0):
        cnt = i + 1
        print('product rows: {}'.format(cnt))
        with open(PRODUCT_DST, 'a', encoding='utf-8') as f:
            f.writelines(rows)
        rows = []

elapsed_time = time.time() - start      

print('{} finish: generate product csv({} sec)'.format(datetime.datetime.now().strftime('%Y/%m/%d %H:%M:%S'), elapsed_time))

# Table: category
# Column: category_code,name
# category_code: 1 - 10,000
# name: category_1 - category_10000

print('{} start: generate category csv'.format(datetime.datetime.now().strftime('%Y/%m/%d %H:%M:%S')))

start = time.time()

rows = []

# header
# rows.append('id,name\n')

for i in range(CATEGORY_CNT):
    category_code = str(i + 1)
    category_name = 'category_' + str(i + 1)
    rows.append('{},{}\n'.format(category_code, category_name))
    # 1,Ausgabe alle 000
    if((i + 1) % 1000 == 0):
        cnt = i + 1
        print('category rows: {}'.format(cnt))
        with open(CATEGORY_DST, 'a', encoding='utf-8') as f:
            f.writelines(rows)
        rows = []

elapsed_time = time.time() - start      

print('{} finish: generate category csv({} sec)'.format(datetime.datetime.now().strftime('%Y/%m/%d %H:%M:%S'), elapsed_time))


# Table: sales
# Column: id,shop_id,product_id,price,count,total_price
# id: 1 - 10,000,000

print('{} start: generate sales csv'.format(datetime.datetime.now().strftime('%Y/%m/%d %H:%M:%S')))

start = time.time()

rows = []

# header
# rows.append('id,shop_id,product_id,price,count,total_price\n')
cnt = 0

for i in range(SALES_CNT):
    sales_id = str(i + 1)
    shop_id = str(random.randrange(1, SHOP_CNT, 1))
    product_id = str(random.randrange(1, PRODCUT_CNT, 1))
    price = str(random.randrange(1, PRICE_MAX, 10))
    count = str(random.randrange(1, COUNT_MAX, 1))
    total_price = str(int(price) * int(count))
    rows.append('{},{},{},{},{},{}\n'.format(sales_id, shop_id, product_id, price, count, total_price))
    # 10,000,Ausgabe alle 000
    if((i + 1) % 10000000 == 0):
        cnt = i + 1
        print('sales rows: {}'.format(cnt))
        with open(SALES_DST, 'a', encoding='utf-8') as f:
            f.writelines(rows)
        rows = []

elapsed_time = time.time() - start      

print('{} finish: generate sales csv({} sec)'.format(datetime.datetime.now().strftime('%Y/%m/%d %H:%M:%S'), elapsed_time))

Recommended Posts

Erstellen Sie Ihre eigenen Big Data in Python zur Validierung
Erstellen Sie Ihre eigenen Linux-Befehle in Python
[LLDB] Erstellen Sie Ihren eigenen Befehl mit Python
Erstellen Sie Ihr eigenes Random Dot Stereogram (RDS) in Python.
[Python] Anmelden Ihres eigenen Moduls
Verwenden Sie einfach Ihre eigenen Funktionen in Python
Erstellen Sie Ihre eigene Diagrammstrukturklasse und deren Zeichnung mit Python
Docker ausprobieren: Erstellen Sie Ihr eigenes Container-Image für eine Python-Web-App
Holen Sie sich Ihre eigene IP-Adresse in Python
Zeigen Sie FX (Forex) Daten Candle Stick in Python an
Verwenden Sie in Ihrem Python keine readlines () für Anweisungen!
Importieren Sie Ihre eigenen Module mit der Python-Entwicklung von Grasshopper
Python: Verwenden Sie Ihre eigene Klasse für Numpy Ndarray
Erstellen Sie Ihre eigene Ausnahme
Erstellen Sie Spatia Lite in Python
[Zur Aufnahme] Keras-Bildsystem Teil 1: Wie erstelle ich einen eigenen Datensatz?
Erstellen Sie mit Selenium einen Datenerfassungsbot in Python
Memo zum Erstellen einer eigenen Box mit Peppers Python
Versuchen Sie, Ihr eigenes Intro-Quiz mit Python zu verbessern
[Python] 2 Erstellen Sie eine Risiko-Rendite-Karte für Ihr Asset-Portfolio
[Blender x Python] Erstellen Sie Ihre eigene Funktion und Zusammenfassung
Verwenden Sie CASA Toolkit in Ihrer eigenen Python-Umgebung
Liste des Python-Codes, der bei der Big-Data-Analyse verwendet wird
Erstellen Sie Ihre erste GDSII-Datei in Python mit gdspy
[Road to Intermediate Python] Definieren Sie in Ihrer eigenen Klasse
Behandeln Sie Umgebungsdaten in Python
Erstellen Sie eine Funktion in Python
Erstellen Sie ein Wörterbuch in Python
Python für die Datenanalyse Kapitel 4
Zeigen Sie UTM-30LX-Daten in Python an
Techniken zum Sortieren in Python
Erstellen Sie Ihre eigene Django-Middleware
Python für die Datenanalyse Kapitel 2
Über "für _ in range ():" von Python
Python für die Datenanalyse Kapitel 3
Versuchen Sie, Ihre eigenen Objekte mit Prioritätswarteschlangen in Python zu sortieren
Erstellen Sie ein untergeordnetes Konto für die Verbindung mit Stripe in Python
[In kürzester Zeit verstehen] Python-Grundlagen für die Datenanalyse
Holen Sie sich LeapMotion-Daten in Python.
Wettbewerb mit VS-Code Erstellen Sie eine Python-Umgebung für Profis unter Windows
Überprüfen Sie Python auf Speicherlecks
[Python] Erstelle deinen eigenen LINE-Bot
Suchen Sie mit Python nach externen Befehlen
Lesen Sie die Protokollpufferdaten mit Python3
Erstellen Sie einen DI-Container mit Python
Behandeln Sie Daten im NetCDF-Format mit Python
Python-Kurs für datenwissenschaftlich-nützliche Techniken
Erstellen Sie eine Binärdatei in Python
Installieren Sie Networkx in der Python 3.7-Umgebung zur Verwendung in Malware Data Science-Büchern
Erstellen Sie Google Mail in Python ohne Verwendung der API
Hashing von Daten in R und Python
Erstellen Sie Ihren eigenen Namensauflösungsdienst
[Django] Erstellen Sie Ihre eigene 403, 404, 500-Fehlerseite
Erstellen Sie eine Python-Projektdokumentation in Sphinx
Vorverarbeitungsvorlage für die Datenanalyse (Python)
Datenformatierung für Python / Farbdiagramme