当前位置: 首页 > 知识库问答 >
问题:

如何在PySpark和Scala Spark中使用多个分隔符处理csv文件?

奚和光
2023-03-14

我需要在PySpark中处理以下场景。

我有以下格式的csv数据,其中分隔符为@|#,名称列中的数据用双引号括起来。标头也由相同的分隔符@|#分隔

name@|#age@|#gender
"Name1"@|#34@|#Male
"Name2"@|#60@|#Female

我需要清理数据并获得如下数据框

+----------+-----+------------+
| Name     | Age |  Gender    |
+----------+------------------+
| Name1    | 34  |  Male      |
| Name2    | 60  |  Female    |
+----------+-----+------------+

此外,在Scala Spark中,我们如何实现同样的目标?

共有1个答案

林烨烨
2023-03-14

您可以在此处(python doc)或此处(scala doc)阅读可以设置从csv读取的选项

对于您的案例,您需要“sep”和“head”:

python:


spark.read.options({"sep":"@|#", "header":"true"}).csv("path_to_file")

或scala:


spark.read.options(Map("sep" -> "@|#", "header" -> "true")).csv("file.csv")

 类似资料:
  • 我有一个包含以下行的文件: 在上面的输出中,我想提取3个字段(数字2,4和最后一个)。我得到以下输出: 如何提取域名位于之后的最后一个字段?如何使用提取字段?

  • 问题内容: 如何在JavaScript中使用多个分隔符拆分字符串?我正在尝试在逗号和空格上进行拆分,但是AFAIK,JS的拆分功能仅支持一个分隔符。 问题答案: 传递正则表达式作为参数: 编辑添加: 您可以通过选择数组的长度减去1来获得最后一个元素: …,如果模式不匹配:

  • 问题内容: 我有一种情况,我必须解析来自不同来源的CSV文件,解析代码非常简单明了。 我的问题来自CSV分隔符,我有许多不同的格式,有时是有时是 有什么方法可以在解析文件之前确定定界符 问题答案: univocity-parsers支持自动检测定界符(也包括行尾和引号)。只需使用它而不是与您的代码作斗争: 免责声明:我是该库的作者,并且确保确保涵盖了各种极端情况。它是开源且免费的(Apache 2

  • 我正在使用spring批处理入站文件,下面是我的用例 将收到包含15个CSV格式文件的zip 我需要并行处理它们 在处理完所有文件后,需要进行一些计算并发送报告 有人能建议我如何使用Spring Batch实现这一点吗?

  • 如何用tesseract(预处理或通过特殊的tesseract配置)正确地识别字符分隔符内的文本,尤其是梳状类型(第3个图像),如下三个图像所示: 正如所观察到的,数字被正确地标记并作为提取文本的子集出现。但是,分隔符也被识别为“1”、“、”、“7”、“4”、“”。预期产量为1992.07.12。 2)我对图像识别是新手。图像预处理是OCR之前的一个重要步骤。我已经从左、下、右三个方向尝试了flo

  • 问题内容: 我想用和分开 因此处理后应该得到: 问题答案: 对更新问题的更新答案: