apache-spark - 将 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')]
现在还不清楚如何修剪那些额外的字符。
解决方案
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
推荐阅读
- java - aspose 单词中的特殊字符编码
- mysql - 如何选择时间点记录
- clickonce - 无法在一台计算机上从 Microsoft Edge Beta(Chromium 版本)启动 ClickOnce 应用程序
- php - php中的DRY数组
- emotion - 是否可以使用情感生成 css 文件?
- python - 使用 for 循环解包列表的麻烦
- python - 要求用户向我的库提供非 python 文件的路径
- java - 没有同步的阻塞操作的有效超时
- bash - 如果匹配则修改行首和行尾
- python - PermissionError: [Errno 13] 权限被拒绝为管理员