为什么变量不能用于Pyspark中的数据类型转换

Why variable cannot be used for casting datatype in Pyspark

提问人:RamK 提问时间:11/2/2023 更新时间:11/2/2023 访问量:31

问:

我不明白为什么它会这样。我想动态转换 DataFrame 新列。但它会抛出错误。就好像我们直接提到的那样,它正在工作。 您的意见将帮助我纠正错误。

input_dict = {"memo":"None","office":"SYD,StringType()","off_no":"987654,IntegerType()"}

valu = input_dict.get(i).split(",")
print(valu[0],"````",valu[1])
cast_to =valu[1]
print(cast_to)

df = df.withColumn(i, lit(val[0]).cast(**cast_to**))

抛出错误

df = df.withColumn(i, lit(val[0]).cast(cast_to))
..\lib\site-packages\pyspark\sql\column.py:774: in cast
    jc = self._jc.cast(dataType)
..lib\site-packages\py4j\java_gateway.py:1321: in __call__
    return_value = get_return_value(

当我直接给演员时。它正在工作。不确定,为什么它表现得像它。如果我将数据类型分配给变量并在强制转换中使用它,则会抛出错误。我可以在字典中得到任何数据类型。所以它必须是动态的。


df = df.withColumn(i, lit(val[0]).cast(**StringType()**)) 

#Working

打印:SYD '''' 字符串类型 () 字符串类型()

我尝试了不同的方式并用谷歌搜索它。无法获得任何输入。需要您的输入,为什么它不适用于可变动态类型。

字典 pyspark 转换

评论

1赞 Joachim Sauer 11/2/2023
"StringType()"和不是一回事。StringType()
0赞 user238607 11/3/2023
创建一个从“StringType()”到“string”等的映射,然后传入。 ,这会将其转换为所需的数据类型。.cast("string")

答: 暂无答案