如何使用分隔符 ^|^ 将数据文件加载到 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 中?的主要内容,如果未能解决你的问题,请参考以下文章

使用python将整个文本文件加载到数据库中

如何在没有使用“ROW FORMAT DELIMITER”创建配置单元表的情况下将“|”分隔文件加载到配置单元中

如何将hive查询结果导出成txt文件

如何加载“|”分隔文件到配置单元中,而不使用“行格式分隔符”创建配置单元表

Hive多分隔符支持示例

Hive多分隔符支持示例