【问题标题】:Pyspark dataframe join taking a very long timePyspark 数据框连接需要很长时间
【发布时间】:2018-06-13 16:48:00
【问题描述】:

我在 pyspark 中有 2 个数据帧,我使用 2 个 sparksql 查询从 hive 数据库加载。

当我尝试使用 df1.join(df2,df1.id_1=df2.id_2) 加入 2 个数据帧时,需要很长时间。 当我调用 JOIN 时,Spark 是否会重新执行 df1 和 df2 的 sql?

底层数据库是HIVE

【问题讨论】:

  • 您是否在寻求一种更快的方式来加入数据帧(在这种情况下,详细说明您的设置/数据、explain() 所说的内容等可能会有所帮助),或者问题实际上是关于sqls的“重新执行”(在这种情况下,更具体地了解您拥有的代码以及您所指的sqls会有所帮助)

标签: hive pyspark apache-spark-sql pyspark-sql


【解决方案1】:

与使用 Scala 相比,Pyspark 会慢一些,因为数据序列化发生在 Python 进程和 JVM 之间,并且工作是在 Python 中完成的。

【讨论】:

  • 这不正确。将 Hive 作为 df1df2df1.join(df2,df1.id_1=df2.id_2) 的源时,Python 执行仅限于驱动程序(最坏的情况下会产生约 100 毫秒的延迟)。
  • 尝试并执行相同的操作,使用 spark-submit --master yarn-cluster... 一次用于 pyspark,一次用于 scala。您会注意到不同之处。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多