首页 > 解决方案 > 将 RDD 的值作为变量传递给另一个 RDD - Spark #Pyspark

问题描述

我目前正在探索如何通过 sqlContext 调用大的 hql 文件(包含 100 行 insert into select 语句)。

另一件事是,hqls 文件是参数化的,所以在从 sqlContext 调用它时,我也想传递参数。

浏览了大量的博客和帖子,但没有找到任何答案。

我正在尝试的另一件事是将 rdd 的输出存储到变量中。

pyspark

max_date=sqlContext.sql("select max(rec_insert_date) from table")

现在想将 max_date 作为变量传递给下一个 rdd

incremetal_data=sqlConext.sql(s"select count(1) from table2 where rec_insert_date > $max_dat")

这是行不通的,而且价值为max_date=

u[row-('20018-05-19 00:00:00')]

现在还不清楚如何修剪那些额外的字符。

标签: apache-sparkdataframepysparkrdd

解决方案


sql Context 重新定义了一个 Dataset[Row]。你可以从那里得到你的价值

max_date=sqlContext.sql("select count(rec_insert_date) from table").first()[0]

在 Spark 2.0+ 中使用 spark Session 你可以

 max_date=spark.sql("select count(rec_insert_date) from table").rdd.first()[0]

从返回的数据帧中获取底层 rdd


推荐阅读