将多个文件中的数据读入单个 RDD 或 Dataframe

阿西夫

我有 HMP数据集这个数据集有14 个不同的文件夹(类别),每个类别都有多个 CSV 文件。

我想将所有 csv 文件中的数据读取到单个数据帧中。数据架构是

 val Tschema = StructType(Array(
  StructField("X", IntegerType, true),
  StructField("Y", IntegerType, nullable = true),
  StructField("Z", IntegerType, true)
 ))

我另外我想向数据框添加另外两列。第一列包含包含当前 CSV 的文件夹(类别)的名称,第二列包含 CSV 文件的名称。

我试过下面的代码,但它不能正常工作。

val path = System.getProperty("user.home") + "/Desktop/HMP/*"  // Path to all categories
val df =spark.sparkContext.wholeTextFiles(path)
df.toDF().show(5 , false)

我的代码的输出是

+----------------------------------------------------------------------+--------------------+
|                                                                    _1|                  _2|
+----------------------------------------------------------------------+--------------------+
|Climb_stairs/Accelerometer-2012-06-06-14-13-20-climb_stairs-m7.txt    |12 38 35            |
|Climb_stairs/Accelerometer-2012-06-06-14-13-20-climb_stairs-m7.txt    |23 56 34            |
|Climb_stairs/Accelerometer-2012-06-06-14-13-20-climb_stairs-m7.txt    |13 36 36            |
|Climb_stairs/Accelerometer-2012-06-06-14-13-20-climb_stairs-m7.txt    |39 57 42            |
|Climb_stairs/Accelerometer-2012-06-06-14-13-20-climb_stairs-m7.txt    |26 51 36            |
+----------------------------------------------------------------------+--------------------+

这里在第一列(_1)之前\是我想要在单独列类上的部分,其余部分将在列源中_2部分,我想应用我定义的架构。

我希望最终输出如下所示。

+---+---+---+--------------+---------------------+
|  X|  Y|  Z|         class|               source|
+---+---+---+--------------+---------------------+
| 37| 34| 43|  Climb_stairs|Accelerometer-2011...|
| 05| 39| 34|  Climb_stairs|Accelerometer-2011...|
| 30| 53| 49|  Climb_stairs|Accelerometer-2011...|
+---+---+---+-------------+----------------------+ 
皮尤什帕特尔

我认为您正在查看来自本地文件系统的文件。你能详细说明你得到了df什么吗?你是在本地模式下运行 spark 吗?

如果您想尝试使用 Cloudera VM,您可以执行以下操作,按照以下步骤将其中两个 csv 文件放入 hdfs 位置

hdfs dfs -mkdir /files
hdfs dfs -put sample.csv sample2.csv /files/

运行火花

spark2-shell
val df = spark.read.csv("/files/")
df.show

对于读取文件名和目录,您可能需要根据 HDFS 上文件的确切位置来使用split和使用input_file_name函数。

您可以添加如下内容。

val df2 = df.withColumn("file_name", split(input_file_name(), "/").getItem(7).cast(StringType))

同样,您可以根据您想要的部分来使用input_file_name并可能substr抓取输入目录。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Spark RDD与Dataframe-数据存储

来自分类Dev

pyspark:将DataFrame转换为RDD [string]

来自分类Dev

使用pyspark将RDD转换为DataFrame

来自分类Dev

无法将RDD [Row]转换为DataFrame

来自分类Dev

如何从Spark中的RDD和DataFrame过滤?

来自分类Dev

从 RDD 中的 Pandas DataFrames 创建 Spark DataFrame

来自分类Dev

将文本文件数据过滤为pyspark rdd和dataframe中的列

来自分类Dev

如何将 Pandas DataFrame 的 rdd 转换为 Spark DataFrame

来自分类Dev

将Dataframe转换回Spark中案例类的RDD

来自分类Dev

从DataFrame到RDD [LabeledPoint]

来自分类Dev

pyspark RDD 到 DataFrame

来自分类Dev

如何将 DataFrame 转换为 RDD[Point] 而不是 RDD[ROW]?

来自分类Dev

Spark:处理所有特定RDD或DataFrame分区的数据

来自分类Dev

将RDD转换为DataFrame Scala-NoSuchMethodError

来自分类Dev

如何将基于案例类的RDD转换为DataFrame?

来自分类Dev

如何将RDD [Row]转换回DataFrame

来自分类Dev

将RDD转换为DataFrame PySpark时出现错误

来自分类Dev

如何将SparkR DataFrame转换为RDD

来自分类Dev

将RDD转换为DataFrame Scala-NoSuchMethodError

来自分类Dev

如何将SparkR DataFrame转换为RDD

来自分类Dev

DataFrame:将列内的数组转换为RDD [Array [String]]

来自分类Dev

Scala/Spark:仅使用 RDD 函数将 DataFrame 展平

来自分类Dev

如何将 RDD[CassandraRow] 转换为 DataFrame?

来自分类Dev

将csv文件加载到RDD和spark中的Dataframe之间的区别

来自分类Dev

在Apache Spark中,如何使RDD / DataFrame操作变得懒惰?

来自分类Dev

DataFrame API如何取决于Spark中的RDD?

来自分类Dev

将多个Pandas DataFrame保存到单个Excel文件中

来自分类Dev

如何将多个压缩文件从S3读取到单个RDD中?

来自分类Dev

如何使用http请求将多个gzipped文件从S3读取到单个RDD中?

Related 相关文章

  1. 1

    Spark RDD与Dataframe-数据存储

  2. 2

    pyspark:将DataFrame转换为RDD [string]

  3. 3

    使用pyspark将RDD转换为DataFrame

  4. 4

    无法将RDD [Row]转换为DataFrame

  5. 5

    如何从Spark中的RDD和DataFrame过滤?

  6. 6

    从 RDD 中的 Pandas DataFrames 创建 Spark DataFrame

  7. 7

    将文本文件数据过滤为pyspark rdd和dataframe中的列

  8. 8

    如何将 Pandas DataFrame 的 rdd 转换为 Spark DataFrame

  9. 9

    将Dataframe转换回Spark中案例类的RDD

  10. 10

    从DataFrame到RDD [LabeledPoint]

  11. 11

    pyspark RDD 到 DataFrame

  12. 12

    如何将 DataFrame 转换为 RDD[Point] 而不是 RDD[ROW]?

  13. 13

    Spark:处理所有特定RDD或DataFrame分区的数据

  14. 14

    将RDD转换为DataFrame Scala-NoSuchMethodError

  15. 15

    如何将基于案例类的RDD转换为DataFrame?

  16. 16

    如何将RDD [Row]转换回DataFrame

  17. 17

    将RDD转换为DataFrame PySpark时出现错误

  18. 18

    如何将SparkR DataFrame转换为RDD

  19. 19

    将RDD转换为DataFrame Scala-NoSuchMethodError

  20. 20

    如何将SparkR DataFrame转换为RDD

  21. 21

    DataFrame:将列内的数组转换为RDD [Array [String]]

  22. 22

    Scala/Spark:仅使用 RDD 函数将 DataFrame 展平

  23. 23

    如何将 RDD[CassandraRow] 转换为 DataFrame?

  24. 24

    将csv文件加载到RDD和spark中的Dataframe之间的区别

  25. 25

    在Apache Spark中,如何使RDD / DataFrame操作变得懒惰?

  26. 26

    DataFrame API如何取决于Spark中的RDD?

  27. 27

    将多个Pandas DataFrame保存到单个Excel文件中

  28. 28

    如何将多个压缩文件从S3读取到单个RDD中?

  29. 29

    如何使用http请求将多个gzipped文件从S3读取到单个RDD中?

热门标签

归档