我使用的是Spark 2.x版本。
我试图在Spark Scala中从一个没有头的管道分隔文本文件中阅读spark变量中的内容后动态Map模式。
文本文件内容-文件.txt:
12345678910|abc|234567
54182124852|def|784964
要Map的架构:
FS1|FS2|FS3
下面是我试过的代码。我也尝试了下面的代码从下面的链接的例子,但它不工作。https://sparkbyexamples.com/spark/spark-read-text-file-rdd-dataframe/#dataframe-read-text
import org.apache.spark.sql.{DataFrame, Dataset}
val df = spark.read.text("dbfs:/FileStore/tables/Sample1-1.txt")
import spark.implicits.
val dataRDD = df.map(x => {
val elements = x.getString(0).split("|")
(elements(0),elements(1),elements(2))
}).toDF("FS1","FS2","FS3")
dataRDD.printSchema()
dataRDD.show(false)
在执行上面的代码后,我得到了下面的输出,这是不期望的,
\+---+---+---+
|fs1|fs2|fs3|
\+---+---+---+
|1 |2 |3 |
|5 |4 |1 |
\+---+---+---+
我希望新文件被保存为- File1.txt,其中将包含文件内容沿着标题
FS1|FS2|FS3
12345678910|abc|234567
54182124852|def|784964
2条答案
按热度按时间jchrr9hc1#
你只需要添加一个头文件到你的csv文件。
你有一个文本文件,你已经知道分隔符是|
你应该写点这样的东西
rqdpfwrv2#
我不知道保存文件
.txt
文件格式背后的原因。将其保存为.txt文件格式有点棘手。如果你能用.csv格式写一个Dataframe,就像下面这样
那就很容易了。