가짜 데이터
개발 테스트를 하다보면, 캐글에서 데이터를 가져와야하거나 공공데이터에서 데이터를 가져와서 쓸때가 많다. 그러나 로그인부터 적절한 데이터를 찾기까지 귀찮을 때가 있어서 대충 엑셀에다 pk 주고 데이터를 아무렇게나 생성할 때가 많았다. 이제부터 그렇게 하지 말고, 좀 더 쉽고 빠르게 가짜 데이터를 얻는 방법인 Faker라이브러리를 알아보자
라이브러리 설치
!pip install Faker
라이브러리 임포트
from pyspark.sql import functions as F
from faker import Faker
from collections import OrderedDict
import uuid
fake = Faker()
화자는 Pyspark 환경에서 사용했음
라이브러리 사용
fake_firstname = F.udf(fake.first_name)
fake_lastname = F.udf(fake.last_name)
fake_email = F.udf(fake.ascii_company_email)
fake_date = F.udf(lambda:fake.date_time_this_month().strftime("%m-%d-%Y %H:%M:%S"))
fake_address = F.udf(fake.address)
operations = OrderedDict([("APPEND", 0.5),("DELETE", 0.1),("UPDATE", 0.3),(None, 0.01)])
fake_operation = F.udf(lambda:fake.random_elements(elements=operations, length=1)[0])
fake_id = F.udf(lambda: str(uuid.uuid4()))
df = spark.range(0, 100000)
df = df.withColumn("id", fake_id())
df = df.withColumn("firstname", fake_firstname())
df = df.withColumn("lastname", fake_lastname())
df = df.withColumn("email", fake_email())
df = df.withColumn("address", fake_address())
df = df.withColumn("operation", fake_operation())
df = df.withColumn("operation_date", fake_date())
df.repartition(100).write.format("json").mode("overwrite").save(folder+"/customers")
repartition()은 Spark에서 데이터를 다시 분할하여 파티셔닝을 조정하는 메서드이며 데이터를 여러 파티션으로 분할하면 여러 작업자(worker)가 동시에 작업이 가능하다.
기타사항
Faker 인스턴스를 생성할 때, "ko_KR"을 넘겨주면 한글로 반환됨
반응형