【发布时间】:2020-04-19 06:34:12
【问题描述】:
以下代码在 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]|
+------+---+----------+----------+--------------+
scala>
如何在 pyspark 中获得相同的行为?我在下面尝试过,但它不起作用并抛出 Java 错误
>>> from pyspark.sql.types import *
>>> tag=["oracle","java"]
>>> df2.withColumn("tags",lit(tag)).show()
错误
: java.lang.RuntimeException: Unsupported literal type class java.util.ArrayList [oracle, java]
【问题讨论】:
-
@blackbishop 不,只解释 scala.. 不解释 pyspark
-
在 pyspark 中,您应该使用
tag = [lit("oracle"), lit("java")] df2.withColumn("tags", array(*tag)).show(),如接受的答案中所述
标签: apache-spark pyspark