Apache spark 为什么spark python udf在不同分区策略上的执行时间相差10倍?
我得到了巨大的(超过10倍~100倍)两个作业之间的执行时间差,只是分区策略不同,我想知道为什么:) 观察:Apache spark 为什么spark python udf在不同分区策略上的执行时间相差10倍?,apache-spark,dataframe,pyspark,apache-spark-sql,udf,Apache Spark,Dataframe,Pyspark,Apache Spark Sql,Udf,我得到了巨大的(超过10倍~100倍)两个作业之间的执行时间差,只是分区策略不同,我想知道为什么:) 观察: 按分区号重新分区时,均衡记录的运行速度比2慢10~100倍 按列重新分区:电话\国家\代码 从spark历史来看,唯一的区别是1。获得较小的较大(10~20%)随机读取大小 我的环境: EMR 4.7上的Spark 1.6.1 Python 2.7 使用pyspark提交作业 火花工作: python udf解析时区信息的电话号码 通过spark redshift从redshift
- EMR 4.7上的Spark 1.6.1
- Python 2.7
- 使用pyspark提交作业
- python udf解析时区信息的电话号码
- 通过spark redshift从redshift读取数据并写回
phone_number, phone_country_code
55-82981399971, 55
1-7073492922, 1
90-5395889859, 90
我猜:
- 在udf上的JVMPY级别上进行一些优化,这取决于分区的记录分布
感谢您的进一步建议:)phonenumber\u util在策略1中需要处理所有国家/地区代码,而在策略2中只需要处理部分国家/地区代码。不确定phonenumber_util如何意识到这一差异,请尝试使用
df。解释以显示这两种方法的执行计划。首先,如果要比较运行时,请在两种情况下使用相同数量的分区。
phone_number, phone_country_code
55-82981399971, 55
1-7073492922, 1
90-5395889859, 90