下面的代码可以在Scala Spark中运行。
scala> val ar = Array("oracle", "java")
ar: Array[String] = Array(oracle, java)
scala> df.withColumn("tags", lit(ar)).show(false)
+------+---+----------+----------+--------------+
|name |age|role |experience|tags |
+------+---+----------+----------+--------------+
|John |25 |Developer |2.56 |[oracle, java]|
|Scott |30 |Tester |5.2 |[oracle, java]|
|Jim |28 |DBA |3.0 |[oracle, java]|
|Mike |35 |Consultant|10.0 |[oracle, java]|
|Daniel|26 |Developer |3.2 |[oracle, java]|
|Paul |29 |Tester |3.6 |[oracle, java]|
|Peter |30 |Developer |6.5 |[oracle, java]|
+------+---+----------+----------+--------------+
如何在PySpark中获得相同的行为?我尝试了下面的,但它不工作,并抛出Java错误。
from pyspark.sql.types import *
tag = ["oracle", "java"]
df2.withColumn("tags", lit(tag)).show()
:java.lang.RuntimeException:不支持的文字类型类java.util.ArrayList [oracle,java]
4条答案
按热度按时间lhcgjxsq1#
可以从函数模块导入数组
测试如下
jjhzyzn02#
我发现下面的列表理解工作
ctzwtxfj3#
scala
中的ar
声明和python
中的tag
声明是有区别的。ar
是array
类型,但tag
是List
类型,lit
不允许List
,这就是为什么它给出错误。您需要安装
numpy
来声明array
,如下所示仅供参考,如果您在
scala
中使用List
,它也会给予错误m528fe3b4#
Spark 3.4+
完整示例: