Apache Spark:Cassandra 阅读:如何在写入文件时忽略或替换“\n”字符
Apache Spark : Cassandra Read : How to Ignore or replace '\n' character while writing to a file
我的 cassandra 中有一些列条目(字符串),其中包含 '\n',例如:
(id,name,age) values(1,'abc\nxyz',28)
现在我正在使用 spark 将我的行写入 csv 文件,但 spark 将 '\n' 字符作为新行
val cass= spark.read.format("org.apache.spark.sql.cassandra").option("keyspace","mykeyspace").option("table","mytable").load
cass.write.csv("abc.csv")
id|name|age
1|abc
xyz|28
2|gfgdd|32
有什么方法可以在写入时忽略或用空白 space 替换 '\n',这样输出将是
id|name|age
1|abcxyz or abc xyz|28
2|gfgdd|32
只需使用 functions.regexp_replace
将下一行字符替换为 space,如下所示
import org.apache.spark.sql.functions
object ReplaceNextLine {
def main(args: Array[String]): Unit = {
val spark = Constant.getSparkSess
import spark.implicits._
val df = List((1,"anc\nxyz",28)).toDF("id","name","age").toDF
.withColumn("name",functions.regexp_replace(functions.col("name"),"\n"," "))
df.show()
}
}
我的 cassandra 中有一些列条目(字符串),其中包含 '\n',例如:
(id,name,age) values(1,'abc\nxyz',28)
现在我正在使用 spark 将我的行写入 csv 文件,但 spark 将 '\n' 字符作为新行
val cass= spark.read.format("org.apache.spark.sql.cassandra").option("keyspace","mykeyspace").option("table","mytable").load
cass.write.csv("abc.csv")
id|name|age
1|abc
xyz|28
2|gfgdd|32
有什么方法可以在写入时忽略或用空白 space 替换 '\n',这样输出将是
id|name|age
1|abcxyz or abc xyz|28
2|gfgdd|32
只需使用 functions.regexp_replace
将下一行字符替换为 space,如下所示
import org.apache.spark.sql.functions
object ReplaceNextLine {
def main(args: Array[String]): Unit = {
val spark = Constant.getSparkSess
import spark.implicits._
val df = List((1,"anc\nxyz",28)).toDF("id","name","age").toDF
.withColumn("name",functions.regexp_replace(functions.col("name"),"\n"," "))
df.show()
}
}