簡體   English   中英

Spark 作業(隨機播放)完成作業的時間太長

[英]Spark job (shuffle) taking too long to finish the job

我正在 EMR 上運行 Spark 作業並嘗試將大型壓縮 CSV 文件 (15GB) 轉換為鑲木地板,但寫入 S3 花費的時間太長。

我將 R5 實例用於主實例(1 個實例)和核心(3 個實例)。 這是我的代碼:

from pyspark.sql import SparkSession
from pyspark.sql.functions import col, to_date

def main():
    spark = SparkSession \
        .builder \
        .appName("csv-to-parquer-convertor") \
        .config("spark.sql.catalogimplementation", "hive") \
        .config("hive.metastore.connect.retries", 3) \
        .config("hive.metastore.client.factory.class", "com.amazonaws.glue.catalog.metastore.AWSGlueDataCatalogHiveClientFactory") \
        .enableHiveSupport().getOrCreate()   

    tgt_filename = 'SOME_Prefix'
    src_path = 'SOURCE_S3_PATH'
    tgt_path = 'TARGET_ BUCKET' + tgt_filename 

    df = spark.read.csv(src_path, header=True)
    partitioned_df = df.repartition(50)
    partitioned_df.write.mode('append').parquet(path=tgt_path)
    spark.stop()

if __name__ == "__main__":
    main()

如果您想要更好的性能,請停止使用 S3。 我是認真的。 您根本沒有做足夠的工作來真正優化您的代碼。 這是一個簡單的問題。 如果您更改耗時最長的內容,您將獲得更好的性能。 (您的讀/寫速度。)這肯定是您問題的瓶頸。 要解決此問題,您需要考慮使用性能比 S3 更好的東西。 HDFS 集群性能更好,並且可以與開箱即用的 spark 一起使用,因此可能是一個不錯的首選替代方案。 當然,它們也是其他選擇,但這取決於您對什么感到滿意。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM