如何将具有多个定界符的文件转换为数据帧

艾玛·库玛(Amar Kumar)

我有一个如下的文本文件

1234_4567_DigitalDoc_XRay-01.pdf
2345_5678_DigitalDoc_CTC-03.png
1234_5684_DigitalDoc_XRay-05.pdf
1234_3345_DigitalDoc_XRay-02.pdf

我期望输出为

| catg|sub_catg|      doc_name        |revision_label|extension|
|1234|     4567|DigitalDoc_XRay-01.pdf|   01         |pdf      |

我创建了一个自定义架构

 val customSchema = StructType(
      StructField("catg", StringType, true)
        :: StructField("sub_catg", StringType, true)
        :: StructField("doc_name", StringType, true)
        :: StructField("revision_label", StringType, true)
        :: StructField("extension", StringType, true)
        :: Nil
    )

我正在尝试创建一个数据框

val df = sparkSession.read
  .format("csv")
  .schema(customSchema)
  .option("delimiter", "_")
  .load("src/main/resources/data/sample.txt")

df.show()

我想知道如何通过自定义记录打破每一行

我可能会编写此类Java代码,有人可以帮我解决这个问题。我是新来的火花。

String word[] = line.split("_");

            String filenName[] = word[3].split("-");
            String revision = filenName[1];
            word[0]+","+word[1]+","+ word[2]+"_"+word[3]+","+revision.replace(".", " ");

您可以使用spark函数获取所需的详细信息-

1.加载数据

 val data =
      """
        |1234_4567_DigitalDoc_XRay-01.pdf
        |2345_5678_DigitalDoc_CTC-03.png
        |1234_5684_DigitalDoc_XRay-05.pdf
        |1234_3345_DigitalDoc_XRay-02.pdf
      """.stripMargin

    val customSchema = StructType(
      StructField("catg", StringType, true)
        :: StructField("sub_catg", StringType, true)
        :: StructField("doc_name", StringType, true)
        :: StructField("revision_label", StringType, true)
        :: StructField("extension", StringType, true)
        :: Nil
    )
    val df = spark.read.schema(customSchema)
      .option("sep", "_")
      .csv(data.split(System.lineSeparator()).toSeq.toDS())
    df.show(false)
    df.printSchema()

输出-

+----+--------+----------+--------------+---------+
|catg|sub_catg|doc_name  |revision_label|extension|
+----+--------+----------+--------------+---------+
|1234|4567    |DigitalDoc|XRay-01.pdf   |null     |
|2345|5678    |DigitalDoc|CTC-03.png    |null     |
|1234|5684    |DigitalDoc|XRay-05.pdf   |null     |
|1234|3345    |DigitalDoc|XRay-02.pdf   |null     |
+----+--------+----------+--------------+---------+

root
 |-- catg: string (nullable = true)
 |-- sub_catg: string (nullable = true)
 |-- doc_name: string (nullable = true)
 |-- revision_label: string (nullable = true)
 |-- extension: string (nullable = true)

2.提取所需的信息

 df.withColumn("doc_name", concat_ws("_", col("doc_name"), col("revision_label")))
      .withColumn("extension", substring_index(col("revision_label"), ".", -1))
      .withColumn("revision_label", regexp_extract(col("revision_label"),"""\d+""", 0))
      .show(false)

输出-

+----+--------+----------------------+--------------+---------+
|catg|sub_catg|doc_name              |revision_label|extension|
+----+--------+----------------------+--------------+---------+
|1234|4567    |DigitalDoc_XRay-01.pdf|01            |pdf      |
|2345|5678    |DigitalDoc_CTC-03.png |03            |png      |
|1234|5684    |DigitalDoc_XRay-05.pdf|05            |pdf      |
|1234|3345    |DigitalDoc_XRay-02.pdf|02            |pdf      |
+----+--------+----------------------+--------------+---------+

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何对具有多个定界符的文件进行排序?

来自分类Dev

如何将具有多个空格的文件转换为制表符分隔的文件?

来自分类Dev

将包含多个定界符的文本文件转换为CSV

来自分类Dev

将具有嵌套定界符的字符串转换为映射

来自分类Dev

在Java中读取具有多个定界符的文件

来自分类Dev

如何将具有多个类别的R数据帧转换为一个类别?

来自分类Dev

有多个定界符时如何将一列分为两列

来自分类Dev

如何将具有不同长度向量的大列表转换为数据帧?

来自分类Dev

如何将记录的2D数组转换为由定界符分隔的多行记录字符串?

来自分类Dev

如何将定界文件(多个定界符)加载到Oracle中?

来自分类Dev

通过多个定界符多次将复杂的字符串转换为数组

来自分类Dev

将逗号转换为点作为定界符

来自分类Dev

使用多个定界符networkx / pandas从.txt文件中添加具有属性的节点

来自分类Dev

在Python中导入具有多个定界符的CSV文件

来自分类Dev

在Java中读取具有多个定界符的文件行

来自分类Dev

如何将字典的数据帧转换为数据帧?

来自分类Dev

将.txt导入具有多个定界符的Pandas Dataframe

来自分类Dev

具有多个定界符的字符串流

来自分类Dev

具有多个定界符的分割列表

来自分类Dev

如何使用定界符将csv文件拆分为多个文件?蟒蛇

来自分类Dev

CSV文件通常使用制表符定界符,如何将Univocity Parsers .csv解析器配置为允许制表符定界符?

来自分类Dev

如何使用fscanf获取具有多个定界符的数字?

来自分类Dev

如何从具有多个定界符的同一行打印匹配值?

来自分类Dev

如何从文本文件导入数据而没有任何定界符或分隔符?

来自分类Dev

如何从文本文件导入数据而没有任何定界符或分隔符?

来自分类Dev

如何将csv文件中的定界符(“,”,“。”,“ |”)更改为逗号(“,”)

来自分类Dev

R将具有多个字符串长度的列表转换为数据帧

来自分类Dev

R将具有多个字符串长度的列表转换为数据帧

来自分类Dev

如何将多个元组转换为 Pandas 中的数据帧

Related 相关文章

  1. 1

    如何对具有多个定界符的文件进行排序?

  2. 2

    如何将具有多个空格的文件转换为制表符分隔的文件?

  3. 3

    将包含多个定界符的文本文件转换为CSV

  4. 4

    将具有嵌套定界符的字符串转换为映射

  5. 5

    在Java中读取具有多个定界符的文件

  6. 6

    如何将具有多个类别的R数据帧转换为一个类别?

  7. 7

    有多个定界符时如何将一列分为两列

  8. 8

    如何将具有不同长度向量的大列表转换为数据帧?

  9. 9

    如何将记录的2D数组转换为由定界符分隔的多行记录字符串?

  10. 10

    如何将定界文件(多个定界符)加载到Oracle中?

  11. 11

    通过多个定界符多次将复杂的字符串转换为数组

  12. 12

    将逗号转换为点作为定界符

  13. 13

    使用多个定界符networkx / pandas从.txt文件中添加具有属性的节点

  14. 14

    在Python中导入具有多个定界符的CSV文件

  15. 15

    在Java中读取具有多个定界符的文件行

  16. 16

    如何将字典的数据帧转换为数据帧?

  17. 17

    将.txt导入具有多个定界符的Pandas Dataframe

  18. 18

    具有多个定界符的字符串流

  19. 19

    具有多个定界符的分割列表

  20. 20

    如何使用定界符将csv文件拆分为多个文件?蟒蛇

  21. 21

    CSV文件通常使用制表符定界符,如何将Univocity Parsers .csv解析器配置为允许制表符定界符?

  22. 22

    如何使用fscanf获取具有多个定界符的数字?

  23. 23

    如何从具有多个定界符的同一行打印匹配值?

  24. 24

    如何从文本文件导入数据而没有任何定界符或分隔符?

  25. 25

    如何从文本文件导入数据而没有任何定界符或分隔符?

  26. 26

    如何将csv文件中的定界符(“,”,“。”,“ |”)更改为逗号(“,”)

  27. 27

    R将具有多个字符串长度的列表转换为数据帧

  28. 28

    R将具有多个字符串长度的列表转换为数据帧

  29. 29

    如何将多个元组转换为 Pandas 中的数据帧

热门标签

归档