代码从 GCS 读取 628360 行的 CSV,使用方法 withColumn 对创建的 Dataframe 应用转换,然后写入分区的 Bigquery 表。
尽管工作流程很简单,但处理工作却花费了 19 小时 42 分钟。 我该怎么做才能更快地处理这个问题?
我正在使用自动缩放策略,并且我知道它不会扩展,因为没有 Yarn 内存挂起,如下所示 。
集群配置如下:
gcloud dataproc clusters create $CLUSTER_NAME \
--project $PROJECT_ID_PROCESSING \
--region $REGION \
--image-version 2.0-ubuntu18 \
--num-masters 1 \
--master-machine-type n2d-standard-2 \
--master-boot-disk-size 100GB \
--confidential-compute \
--num-workers 4 \
--worker-machine-type n2d-standard-2 \
--worker-boot-disk-size 100GB \
--secondary-worker-boot-disk-size 100GB \
--autoscaling-policy $AUTOSCALING_POLICY \
--secondary-worker-type=non-preemptible \
--subnet $SUBNET \
--no-address \
--shielded-integrity-monitoring \
--shielded-secure-boot \
--shielded-vtpm \
--labels label\
--gce-pd-kms-key $KMS_KEY \
--service-account $SERVICE_ACCOUNT \
--scopes 'https://www.googleapis.com/auth/cloud-platform' \
--zone "" \
--max-idle 3600s
我看到两个主要问题:
磁盘太小,这不会为您节省金钱,相反它们会显着减慢工作速度,并且您最终会为 CPU 支付更多费用。建议的最小大小为 1 TB。请参阅此doc了解更多详细信息。
机密计算更安全,但代价是它会显着减慢速度,因此仅在必要时启用它。