如何使用分隔符 ^|^ 将数据文件加载到 spark scala 中?
Posted
技术标签:
【中文标题】如何使用分隔符 ^|^ 将数据文件加载到 spark scala 中?【英文标题】:How to use delimeter ^|^ for loading data file into spark scala? 【发布时间】:2020-03-11 14:36:10 【问题描述】:我有数据,需要使用分隔符作为 ^|^ 来加载到 df。df 没有标题数据。
【问题讨论】:
你检查documentation了吗?您可以使用delimiter
选项。
你好 Luis,我知道我们可以使用分隔符,但是这里的问题可以使用 3 char 符号作为分隔符吗?由于我的代码抛出错误,我不能使用多个字符作为分隔符。
您可能需要编辑问题以明确这一点,而不是您不能。文档明确指出:“设置一个单个字符作为每个字段和值的分隔符”.
嗨 Luis,我们没有使用多字符分隔符的选项吗?
Spark 内置,我相信不是,但我不是专家。也许你可以做你自己的 csv 解析器。我建议您关闭此问题并打开一个新问题,明确您已阅读文档并且它说是一个字符但您有三个字符。也许一些火花大师可以提供帮助。
【参考方案1】:
分隔符选项不支持多字符值。相反,您可以加载文件并根据分隔符拆分它
输入文件:
A^|^B^|^1
C^|^D^|^2
E^|^F^|^3
G^|^H^|^4
代码:
val file = spark.read.textFile("C:\\PATH\test.txt")
.map(line => line.split("\\^\\|\\^"))
def getColAtIndex(id:Int): Column = col(s"value")(id).as(s"column1_$id+1")
val columns: IndexedSeq[Column] = (0 to 2).map(getColAtIndex)
file.select(columns: _*).show
输出:
+---------+---------+---------+
|column1_1|column1_2|column1_3|
+---------+---------+---------+
| A| B| 1|
| C| D| 2|
| E| F| 3|
| G| H| 4|
+---------+---------+---------+
【讨论】:
以上是关于如何使用分隔符 ^|^ 将数据文件加载到 spark scala 中?的主要内容,如果未能解决你的问题,请参考以下文章
如何在没有使用“ROW FORMAT DELIMITER”创建配置单元表的情况下将“|”分隔文件加载到配置单元中