使用SparkSQL读取多个实木复合地板文件时,将子文件夹作为一列获取

巴蒂斯特·梅里奥特

我想在使用SparkSQL从镶木地板文件加载的每个DataFrame中添加一列,以添加文件路径的子字符串,然后使其成为单个DataFrame。

例如,在加载时.../subfolder1/my_parquet_file1.parquet.../subfolder2/my_parquet_file2.parquet我想要以下最终DataFrame:

col1 | col2 | subfolder
------------------------
aaa  | bbb  | subfolder1
ccc  | ddd  | subfolder1
eee  | fff  | subfolder2
ggg  | hhh  | subfolder2

以下代码允许将所有文件加载到路径列表中:

sqlContext.read.schema(schema).parquet(paths: _*)

但是通过直接拥有最终的DataFrame,我无法根据每行的来源添加子文件夹。

有没有一种方法可以在不顺序加载每个文件的情况下执行此操作?

尝试这个 -

val df = spark.read
      .parquet(
        getClass.getResource("/parquet/day/day1/part-00000-4ece3595-e410-4301-aefd-431cd1debf91-c000.snappy.parquet")
          .getPath,
        getClass.getResource("/parquet/day/day2/part-00000-4ece3595-e410-4301-aefd-431cd1debf91-c000.snappy.parquet")
          .getPath
      )
    df.show(false)
    df.printSchema()

    /**
      * +------+
      * |price |
      * +------+
      * |123.15|
      * |123.15|
      * +------+
      *
      * root
      * |-- price: decimal(5,2) (nullable = true)
      */

    df.withColumn("subfolder", element_at(split(input_file_name(), "/"), -2))
      .show(false)

    /**
      * +------+---------+
      * |price |subfolder|
      * +------+---------+
      * |123.15|day1     |
      * |123.15|day2     |
      * +------+---------+
      */

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用PySpark读取时过滤实木复合地板文件

来自分类Dev

实木复合地板文件夹下的一个实木复合地板文件是否为分区?

来自分类Dev

如何使用dask / dask-cudf将单个大型实木复合地板文件读取到多个分区中?

来自分类Dev

使用反射将pojo写入实木复合地板文件

来自分类Dev

读取使用pyarrow保存为实木复合地板的DataFrames,将文件名保存在列中

来自分类Dev

如何让Spark 2.0阅读像CSV的mutli文件夹实木复合地板

来自分类Dev

读取Driver类中的实木复合地板文件

来自分类Dev

从分区的实木复合地板文件读取DataFrame

来自分类Dev

快从Spark读取实木复合地板文件

来自分类Dev

Pyspark-从另一个DF读取实木复合地板文件时如何设置架构?

来自分类Dev

读取实木复合地板文件后创建一个简单的DF

来自分类Dev

将多个目录的CSV文件转换为PySpark中的实木复合地板

来自分类Dev

将包含多个表的250GB JSON文件拆分为实木复合地板

来自分类Dev

使用服务主体从ADLS gen2读取实木复合地板文件

来自分类Dev

使用分区时如何控制生成的实木复合地板文件的数量

来自分类Dev

如何限制Hive中的实木复合地板的实木复合地板文件尺寸?

来自分类Dev

为什么从Google Storage中读取分区的实木复合地板文件而不是在本地读取时,GCP会被杀死?

来自分类Dev

为什么Dask读取实木复合地板文件的速度比熊猫读取相同实木复合地板文件的速度慢得多?

来自分类Dev

如何使用`ssc.fileStream()`读取实木复合地板文件?传递给ssc.fileStream()的类型是什么?

来自分类Dev

Hive无法读取Spark生成的分区实木复合地板文件

来自分类Dev

从实木复合地板文件中读取分区数据,然后将其写回以保持层次结构?

来自分类Dev

读取大量的实木复合地板文件:read_parquet与from_delayed

来自分类Dev

提高读取实木复合地板文件的并行度-Spark优化自连接

来自分类Dev

优化从s3存储桶中的分区实木复合地板文件读取

来自分类Dev

如何从实木复合地板文件中读取和编写自定义类

来自分类Dev

保存后,Spark独立群集读取实木复合地板文件

来自分类Dev

生成实木复合地板文件的元数据

来自分类Dev

如何查看Apache的实木复合地板的文件在Windows?

来自分类Dev

CUDF错误处理大量实木复合地板文件

Related 相关文章

  1. 1

    使用PySpark读取时过滤实木复合地板文件

  2. 2

    实木复合地板文件夹下的一个实木复合地板文件是否为分区?

  3. 3

    如何使用dask / dask-cudf将单个大型实木复合地板文件读取到多个分区中?

  4. 4

    使用反射将pojo写入实木复合地板文件

  5. 5

    读取使用pyarrow保存为实木复合地板的DataFrames,将文件名保存在列中

  6. 6

    如何让Spark 2.0阅读像CSV的mutli文件夹实木复合地板

  7. 7

    读取Driver类中的实木复合地板文件

  8. 8

    从分区的实木复合地板文件读取DataFrame

  9. 9

    快从Spark读取实木复合地板文件

  10. 10

    Pyspark-从另一个DF读取实木复合地板文件时如何设置架构?

  11. 11

    读取实木复合地板文件后创建一个简单的DF

  12. 12

    将多个目录的CSV文件转换为PySpark中的实木复合地板

  13. 13

    将包含多个表的250GB JSON文件拆分为实木复合地板

  14. 14

    使用服务主体从ADLS gen2读取实木复合地板文件

  15. 15

    使用分区时如何控制生成的实木复合地板文件的数量

  16. 16

    如何限制Hive中的实木复合地板的实木复合地板文件尺寸?

  17. 17

    为什么从Google Storage中读取分区的实木复合地板文件而不是在本地读取时,GCP会被杀死?

  18. 18

    为什么Dask读取实木复合地板文件的速度比熊猫读取相同实木复合地板文件的速度慢得多?

  19. 19

    如何使用`ssc.fileStream()`读取实木复合地板文件?传递给ssc.fileStream()的类型是什么?

  20. 20

    Hive无法读取Spark生成的分区实木复合地板文件

  21. 21

    从实木复合地板文件中读取分区数据,然后将其写回以保持层次结构?

  22. 22

    读取大量的实木复合地板文件:read_parquet与from_delayed

  23. 23

    提高读取实木复合地板文件的并行度-Spark优化自连接

  24. 24

    优化从s3存储桶中的分区实木复合地板文件读取

  25. 25

    如何从实木复合地板文件中读取和编写自定义类

  26. 26

    保存后,Spark独立群集读取实木复合地板文件

  27. 27

    生成实木复合地板文件的元数据

  28. 28

    如何查看Apache的实木复合地板的文件在Windows?

  29. 29

    CUDF错误处理大量实木复合地板文件

热门标签

归档