我需要处理存储在s3中的数据并将其存储在snowflake中。在几次测试中,我发现了一个性能问题。
公共配置
数据a(存储在s3中):20gb
数据b(存储在s3和雪花中):8.5kb
操作:左外联接
使用emr(Spark)r5.4XL(5)
当我读取数据a和数据b(雪花)时,它经过了1个多小时12分钟
val Adf= spark.read.parquet("s3://path")
var sfOptions = Map.apply(
"sfURL" -> "XXXXX.us-east-1.snowflakecomputing.com",
"sfUser" -> XXXXX",
"sfPassword" -> "XXXX",
"sfDatabase" -> "XXX",
"sfSchema" -> "XXXX",
"sfWarehouse" -> "XXXX"
)
val Bdf: DataFrame = spark.sqlContext.read
.format(SNOWFLAKE_SOURCE_NAME)
.options(sfOptions)
.option("dbtable","XXXX")
.load()
val resultDF = Adf.join(Bdf, Seq("CNTY"), "leftouter")
resultDF.write
.fomat(SNOWFLAKE_SOURCE_NAME)
.options(sfOptions)
.option("dbtable","t_result_from spark")
.opton("parallelism","8")
.mode(SaveMode.Overwrite)
.save()
但当我读取数据a和数据b(s3)时,只花了10分钟。
val Adf= spark.read.parquet("s3://path")
val Bdf spark.read.option("header","true").csv("s3://path")
val resultDF = Adf.join(Bdf, Seq("CNTY"), "leftouter")
resultDF.write
.fomat(SNOWFLAKE_SOURCE_NAME)
.options(sfOptions)
.option("dbtable","t_result_from spark_2")
.opton("parallelism","8")
.mode(SaveMode.Overwrite)
.save()
为什么在s3上阅读和在snowflake上阅读有不同的表现?
暂无答案!
目前还没有任何答案,快来回答吧!