使用来自数据帧的值作为字符串调用 pyspark 中的函数

伯爵

我必须调用一个func_test(spark,a,b)接受两个字符串值的函数并从中创建一个 df 。spark是一个SparkSession变量这两个字符串值是另一个数据帧的两列,并且对于该数据帧的不同行会有所不同。

我无法做到这一点。

到目前为止尝试过的事情:
1。

ctry_df = func_test(spark, df.select("CTRY").first()["CTRY"],df.select("CITY").first()["CITY"])

仅给出 df 的第一条记录的 CTRY 和 CITY。

2.

ctry_df = func_test(spark, df['CTRY'],df['CITY'])

给予Column<b'CTRY'>Column<b'CITY'>作为价值。

示例:df 是:

+----------+----------+-----------+
|     CTRY |     CITY |    XYZ    |
+----------+----------+-----------+
|      US  |     LA   |      HELLO|                                    
|      UK  |     LN   |      WORLD|
|      SN  |     SN   |      SPARK|
+----------+----------+-----------+

所以,我想先调用 fetch func_test(spark,US,LA)第二个电话去func_test(spark,UK,LN)第三个电话是func_test(spark,SN,SN)等等。

Pyspark - 3.7
Spark - 2.2

编辑1:

详细问题:

func_test(spark,string1,string2)是一个接受两个字符串值的函数。在这个函数内部是一组完成的各种数据帧操作。例如:- func_test 中的第一个spark sql 是一个普通的select,在where 子句中使用了这两个变量string1 和string2。这个生成df的spark sql的结果是下一个spark sql的临时表等等。最后,它创建一个函数func_test(spark,string1,string2)返回的 df

现在,在主类中,我必须调用这个 func_test 并且两个参数 string1 和 string2 将从数据帧的记录中获取。因此,第一个 func_test 调用将查询生成为select * from dummy where CTRY='US' and CITY='LA'并且随后的操作发生导致df。第二次调用 func_test 变为select * from dummy where CTRY='UK' and CITY='LN'. 第三次调用变成select * from dummy where CTRY='SN' and CITY='SN'依此类推。

吉加苏奈亚尔

而不是first()使用collect()并遍历循环

collect_vals = df.select('CTRY','CITY').distinct().collect()
for row_col in collect_vals:
    func_test(spark, row_col['CTRY'],row_col['CITY'])

希望这可以帮助 !!

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Pandas 使用来自单独数据帧的值在数据帧中搜索子字符串

使用pyspark在特定字符后截断数据帧列中的所有字符串

如何在pyspark中使用pandas_udf拆分数据帧中的字符串

使用来自 SQL Server 中不同表的数据创建逗号分隔值字符串

pandas udf 作为 pyspark 中的窗口函数

在 PySpark 中调用函数时出错

PySpark-在UDF中调用函数

如何正确使用 Pyspark 中的 ChiSquareTest 函数?

如何从pyspark中的spark数据帧行中解析和转换json字符串

PySpark:按其他表中的子字符串过滤数据帧

如何从pyspark中的spark数据帧行转换具有多个键的JSON字符串?

如何解析嵌套列表的JSON字符串以在pyspark中触发数据帧?

将逗号分隔的字符串转换为pyspark数据帧中的数组

通过子字符串搜索连接pyspark中的两个数据帧

在pyspark数据帧中处理字符串到数组的转换

Pyspark 数据帧中两个字符串之间的相似性

使用 Soundex 函数或 Levenshtein 距离模糊匹配 pyspark 或 SQL 中的字符串

如何使用来自字符串变量的参数调用Java脚本函数

pyspark:使用window()函数并比较字符串

pyspark中的除法函数

pyspark中的函数input()

如何使用字符串(或某种其他类型的元数据)中的逻辑向(PySpark)数据帧添加新列?

遍历pyspark中的数据帧

Pyspark 数据帧中的 Cache()

Pyspark替换Spark数据框列中的字符串

Pyspark数据框列-转换为列中以字符串表示的十进制值

在 PySpark 数据框中 - 连接多行的字符串值并按项目 ID 分组

Pyspark-Lambda中的调用函数导致导入错误

在PySpark中替换字符串