У меня есть скрипт Python Glue:
from awsglue.transforms import *
from awsglue.utils import getResolvedOptions
from pyspark.context import SparkContext
from awsglue.context import GlueContext
from awsglue.job import Job
from pyspark.sql.functions import col,year,month,dayofmonth,to_date,from_unixtime
from awsglue.dynamicframe import DynamicFrame
# .... default glue stuff
df = dropnullfields3.toDF()
new_df = df.withColumn('datestamp', to_date(from_unixtime(col('timestamp')))) \
.withColumn('year', year(col('datestamp'))) \
.withColumn('month', month(col('datestamp'))) \
.withColumn('day', dayofmonth(col('datestamp'))) \
.drop(col('datestamp')) \
.repartition(1)
dynamic_frame = DynamicFrame.fromDF(new_df, glueContext, 'enriched')
## @type: DataSink
## @args: [connection_type = "s3", connection_options = {"path": "s3://bucket/dms/folder"}, format = "parquet", transformation_ctx = "datasink4"]
## @return: datasink4
## @inputs: [frame = dropnullfields3]
datasink4 = glueContext.write_dynamic_frame.from_options(frame=dynamic_frame,
connection_type="s3",
connection_options={
"path": "s3://bucket/dms/folder",
"partitionKeys": ["year", "month", "day"]
},
format="parquet",
transformation_ctx="datasink4")
job.commit()
Я пытаюсь разбить 17 ГБ файлов паркета, разбить на 17 файлов с максимальным объемом 1,2 ГБ на файл, сгенерированных AWS DMS изБаза данных MySQL по годам, месяцам и дням извлекается из отметки времени.
Когда я работал с 5 DPU, я получил следующее:
An error occurred while calling o114.pyWriteDynamicFrame.
Job aborted due to stage failure: Task 0 in stage 2.0 failed 4 times, most recent failure: Lost task 0.3 in stage 2.0 (TID 142, <REDACTED>.compute.internal, executor 10): ExecutorLostFailure (executor 10 exited caused by one of the running tasks) Reason: Container killed by YARN for exceeding memory limits. 5.8 GB of 5.5 GB physical memory used.
Consider boosting spark.yarn.executor.memoryOverhead or disabling yarn.nodemanager.vmem-check-enabled because of YARN-4714.
Затем я попытался повысить до 20DPU:
An error occurred while calling o113.pyWriteDynamicFrame.
Slow Down (Service: Amazon S3; Status Code: 503; Error Code: 503 Slow Down; Request ID: 0E....135; S3 Extended Request ID: FhR...Is=)
Как мне разобрать большие таблицы, подобные этой? Потому что эта таблица даже не самая большая, которую нам придется разделить.