【发布时间】:2022-01-18 19:41:44
【问题描述】:
我正在 EMR 上运行 Spark 作业,并尝试将一个大型压缩 CSV 文件 (15GB) 转换为 parquet,但写入 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,它很慢)
-
它很慢,我想要一个更好的方法。
-
基于意见和什么是缓慢的。
-
写入 S3 时
标签: python amazon-web-services apache-spark pyspark apache-spark-sql