【问题标题】:Spark best approach Look-up Dataframe to improve performanceSpark 最佳方法 Look-up Dataframe 以提高性能
【发布时间】:2017-01-03 10:44:01
【问题描述】:

Dataframe A(百万条记录)的一列是create_date,modified_date

Dataframe B 500 记录有 start_date 和 end_date

目前的做法:

Select a.*,b.* from a join b on a.create_date between start_date and end_date

上述作业需要半小时或更长时间才能运行。

如何提高性能

【问题讨论】:

标签: scala apache-spark cassandra datastax-enterprise


【解决方案1】:

DataFrames 目前没有这样的直接连接方法。它将在执行连接之前完全读取两个表。

https://issues.apache.org/jira/browse/SPARK-16614

您可以使用 RDD API 来利用 joinWithCassandraTable 函数

https://github.com/datastax/spark-cassandra-connector/blob/master/doc/2_loading.md#using-joinwithcassandratable

【讨论】:

  • 两者都在内存数据帧中
【解决方案2】:

正如其他人所建议的,其中一种方法是广播较小的数据帧。这也可以通过配置以下参数自动完成。

spark.sql.autoBroadcastJoinThreshold

如果数据帧大小小于此处指定的值,Spark 会自动广播较小的数据帧,而不是执行连接。你可以阅读更多关于这个here的信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-14
    • 2015-11-27
    • 1970-01-01
    • 2010-09-09
    • 1970-01-01
    • 2015-08-04
    • 2016-06-21
    相关资源
    最近更新 更多