编写Spark Scala后丢失了一些数据类型值

时间:2019-01-08 07:58:28

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

我是新来的火花。

我有一个如下数据框。这是一个示例数据框,ID有32个字符,我将其类型转换为整数。

ID,                             Transaction_amount,    Year
11111111111111111111111111111111,   1000,              2016
22222222222222222222222222222222,   2000,              2017
11111111111111111111111111111111,   1000,              2018
33333333333333333333333333333333,   3000,              2018

我想根据ID对数据帧进行分区,并将每个分区写入一个csv文件。所以我写下面的代码。

 df
  .write
  .partitionBy("ID")
  .csv("/path")

它给了我一个输出的csv文件,如下所示(当ID = 11111111111111111111111111111111时)。

1000,2016
1000,2018

您可以看到文件中缺少ID值。 因此,我如下更新代码。

     df
      .withColumn("ID_", $"ID")
      .write
      .partitionBy("ID_")
      .csv("/path")

它给了我以下结果。

,1000,2016
,1000,2018

您可以看到ID值丢失。

我的预期输出csv文件应如下所示(当ID = 11111111111111111111111111111111时)。

11111111111111111111111111111111,1000,2016
11111111111111111111111111111111,1000,2018

作为一个初学者,我认为它与ID的数据类型有关。因为当我将ID的数据类型更改为String时,它给出了如上所述的输出,但是分区并没有按照我想要的方式工作。当我检查一个csv文件时,它是所有ID的集合。

有人可以帮忙我的代码吗? 谢谢:)

0 个答案:

没有答案