![](/img/trans.png)
[英]Unresolved reference while trying to import col from pyspark.sql.functions in python 3.5
[英]Using pyspark.sql.functions without sparkContext import problem
我的情況可以簡單化為兩個文件的示例。
過濾器.py
from pyspark.sql import functions as F
condition = F.col('a') == 1
主文件
from filters import condition
from pyspark.sql import SparkSession
def main():
spark = SparkSession.builder.getOrCreate()
table = spark.table('foo').filter(condition)
它的出現,是F.col
對象不能沒有主動sparkSession / sparkContext對象被創建,因此導入失敗。
有什么方法可以將過濾器與其他文件分開,以及如何導入它們?
我的情況有點復雜,這個過濾器在項目中的許多不同功能中使用,所以我不能在每個功能中導入它。 我需要一種方法將它安全地導入到全局命名空間。
您可以將條件創建為字符串:
過濾器.py
condition = "F.col('a') == 123"
然后使用eval
運行代碼:
主文件
from pyspark.sql import SparkSession
import pyspark.sql.functions as F
from filters import condition
if __name__ == "__main__":
spark = SparkSession.builder.getOrCreate()
data = [
{"id": 1, "a": 123},
{"id": 2, "a": 23},
]
df = spark.createDataFrame(data=data)
df = df.filter(eval(condition))
本示例中的結果如預期的那樣:
+---+---+
| a| id|
+---+---+
|123| 1|
+---+---+
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.