用例: A>在AWS s3位置使用Text Gzipped文件 B个在文件顶部创建的Hive表,用于从表中访问文件中的数据 c取代;使用Spark Dataframe读取表并使用Snappy Compression转换为Parquet数据 d取代;表中的字段数为25,其中包括2个分区列。数据类型是字符串,除了两个以Decimal作为数据类型的字段。
使用以下Spark选项: - executor-memory 37G --executor-cores 5 --num-executors 20
群集大小 - 类型为r3.8xLarge的10个数据节点
发现AWS EMR中使用的vCore数量始终等于文件数量,可能是因为gzip文件不可拆分。 Gzip文件来自不同的系统,文件大小约为8 GB。
总共花费29.8GB的6个文件的Parquet转换所需的总时间超过2小时。
有没有办法通过Spark使用版本2.0.2来提高性能?
代码段:
val srcDF = spark.sql(stgQuery) srcDF.write.partitionBy( “data_date”, “batch_number”)选项(地图( “压缩” - > “活泼”, “spark.hadoop.mapreduce.fileoutputcommitter.algorithm.version” - > “中2”,” spark.speculation “ - >” 中。假“))模式(SaveMode.Overwrite).parquet(finalPath)
答案 0 :(得分:0)
无论您要求多少个节点,或者有多少个核心,如果您有6个文件,将分配六个线程来处理它们。尝试做一个