Spark:加载/分析空间分隔加引号字符串

时间:2018-05-14 20:51:31

标签: scala apache-spark apache-spark-sql

我有如下记录。

空格分隔/分隔:

2015-07-22 5555 9999 "abc bbc 777" "FFF/5.0 (NTFS NT 6.1)"
2015-07-16 1111 7777 "7873 b34 bt57" "77/99 (TT; 420; ty:39.0) aa/11.0"

我想知道是否有任何直接的方法来分割/分离字段4和5,如果它们是双引号 使用sc.textfile和spark.read.format()?

预期产出:

    -------------------------------------------------------------------------------------------------
    Date       |Value1    |Value2     |Value3                     |Value3                           |
    -------------------------------------------------------------------------------------------------
    2015-07-22 |5555      |9999       |abc bbc 777                |FFF/5.0 (NTFS NT 6.1)
    2015-07-16 |1111      |7777       |7873 b34 bt57              |77/99 (TT; 420; ty:39.0) aa/11.0 |
    -------------------------------------------------------------------------------------------------

如果已经有类似的解决方案,请指出。任何帮助将不胜感激!!

1 个答案:

答案 0 :(得分:2)

标准csv阅读器将能够正确读取此格式

scala> spark.read.option("delimiter", " ").csv(pathToFile).show
+----------+----+----+-------------+--------------------+
|       _c0| _c1| _c2|          _c3|                 _c4|
+----------+----+----+-------------+--------------------+
|2015-07-22|5555|9999|  abc bbc 777|FFF/5.0 (NTFS NT ...|
|2015-07-16|1111|7777|7873 b34 bt57|77/99 (TT; 420; t...|
+----------+----+----+-------------+--------------------+