【发布时间】:2019-01-04 17:29:28
【问题描述】:
我正在尝试将 AWS GLUE 与 pyspark 结合使用,以使用 Python Faker 库生成假数据。我对 pyspark 不是很熟悉,我想找到最快的方法来生成假数据(最多 10 tb 左右)。特别是,我目前使用的基于行的生成大约需要 15 分钟才能生成 1.5 GB:
import sys
from awsglue.transforms import *
from awsglue.utils import getResolvedOptions
from pyspark.context import SparkContext
from awsglue.context import GlueContext
from awsglue.dynamicframe import DynamicFrame
from awsglue.job import Job
from pyspark.sql import Row
from faker import Faker
## @params: [JOB_NAME]
args = getResolvedOptions(sys.argv, ['JOB_NAME'])
sc = SparkContext()
glueContext = GlueContext(sc)
spark = glueContext.spark_session
job = Job(glueContext)
job.init(args['JOB_NAME'], args)
# number of records
num_records = int(1e6)
# faker settings
fake = Faker('nl_NL')
fake_line = lambda x: Row(fake.sha256(), fake.name(), fake.street_name(), fake.province(), fake.country(), fake.phone_number(), fake.email(), fake.iban())
df_header = ['sha256', 'name', 'streetname', 'province', 'country', 'phonenumber', 'email', 'iban']
# create
df = sc.parallelize(range(0, num_records)).map(fake_line).toDF(schema = df_header)
dynamic_df = DynamicFrame.fromDF(df, glueContext, 'dynamic_faker')
glueContext.write_dynamic_frame.from_options(
frame = dynamic_df,
connection_type = "s3",
connection_options = {"path": "s3://bucket-path"},
format = "csv",
transformation_ctx = "")
job.commit()
【问题讨论】:
标签: python amazon-web-services apache-spark pyspark aws-glue