【发布时间】:2018-10-10 07:34:47
【问题描述】:
Spark 新手,我边走边学。我有一个非常大的文本文件,其中的列由“|||||”分隔我想插入到火花数据框中。但是,该文件只是一个行字符串。该文件如下所示:
col1|||||col2|||||col3|||||col4|||||col5|||||col1|||||col2|||||col3...
所以第 1 列到第 5 列基本上只是在一行中循环。我试图在每 5 个 "|||||" 之后插入一个新行使用 sed 命令通过:
sed -r 's/([^|||||]*|||||){5}/&\n/g'
其中大部分工作但最终由于某种原因无法正常工作。我怀疑 col4(这是一个巨大的文本字段)在这方面造成了一些问题,但我不知道它为什么这样做。
现在,当我通过以下方式将单行文本文件读入 spark 时:
val df = spark.read.textFile(file)
这会将所有内容放在一列中,我想将其拆分为 5 列,并让数据框在每 5 列之后“包装”字符串。
我的目标是让它变成这样:
+--------------------+---------------+--------------------+--------------------+--------------------+
| col1| col2| col3| col4| col5|
+--------------------+---------------+--------------------+--------------------+--------------------+
| val| val| val| val| val|
| val| val| val| val| val|
+--------------------+---------------+--------------------+--------------------+--------------------+
所以我的问题是:因为我的文件只是一个大字符串,有没有办法让数据框在 5 列后输入新的记录/行?
【问题讨论】:
标签: apache-spark