我已经通过使用
df.withColumn('username1', regexp_replace(col('username1'), 'Me', 'My')).withColumn('username2', regexp_replace(col('username2'), 'Me', 'My')).withColumn('username3', regexp_replace(col('username3'), 'Me', 'My'))
但是我只看到它受到username
列和其他2列(username2
和username3
)的影响,而不受此影响。
答案 0 :(得分:0)
无法重现我的错误。遵循对我有用的示例代码。
import org.apache.spark.sql.types._
val schemaString = "username email ph"
val fields = schemaString.split(" ").map(fieldName => StructField(fieldName,StringType, nullable=true))
val schema = StructType(fields)
val rdd = sc.parallelize(List("me_name,me_name@yahoo.com,me_phone")).map(_.split(",")).map{x => org.apache.spark.sql.Row(x:_*)}
val df = spark.createDataFrame(rdd,schema)
val newDF = df.withColumn("username", regexp_replace(col("username"), "me", "my")).withColumn("email", regexp_replace(col("email"), "me", "my")).withColumn("ph", regexp_replace(col("ph"), "me", "my"))
查看数据框中的实际数据
df.show
+--------+-----------------+--------+
|username| email| ph|
+--------+-----------------+--------+
| me_name|me_name@yahoo.com|me_phone|
+--------+-----------------+--------+
现在让我们看一下转换后的数据
newDF.show
+--------+-----------------+--------+
|username| email| ph|
+--------+-----------------+--------+
| my_namy|my_namy@yahoo.com|my_phone|
+--------+-----------------+--------+
让我知道是否有帮助。