【发布时间】:2024-01-24 02:11:01
【问题描述】:
在我的项目中,我想在YAML 文件中维护连接条件(pyspark 数据帧连接条件)。
示例连接条件如下所示。
table1.col1 == table2.col1
在 YAML 中,条件是这样的。
cond: table1.col1 == table2.col1
当我从 YAML 读取连接条件时。我得到如下(字符串类型)。
table1.col1 == table2.col1
条件转换为字符串(用单引号括起来)。
为了解决这个问题(为了获得准确的文字而不是字符串),我尝试了以下方法。但是,它们不起作用。
1)
import ast
final_cond = ast.literal_eval(cond)
2)
import json
final_cond = json.loads(cond)
我在阅读时需要确切的文字而不是字符串,或者将这种相等连接条件从字符串转换为文字。
注意:要应用连接条件,一种方法是编写这样的代码。
joined = table1.join(table2, [table1.col1 == table2.col1], "inner")
但是,如果我从 YAML 中获取条件,joined 将变为如下。
joined = table1.join(table2, ['table1.col1 == table2.col1'], "inner") # notice the enclosed single quotes
引号(单引号或双引号)是失败的原因。
目前,YAML 文件只有以下对。如果这种方法可行,我将添加更多类似的条件。
cond: table1.col1 == table2.col1
【问题讨论】:
-
您期望得到什么? YAML 只是字符串。 YAML 文件的示例也可能会有所帮助
-
我更新了问题,进一步解释了问题。
-
YAML 文件是一个字符串。您阅读的所有内容都是字符串。它没有类型或“条件”的概念。您将需要进行转换。某些语言中存在的某种形式的评估。