scala 在spark中写入后数据丢失

ukxgm1gy  于 4个月前  发布在  Scala
关注(0)|答案(3)|浏览(77)

我在对它执行一些计算后得到一个结果框架。假设该框架是结果。当我将其写入Amazon S3时,有特定的单元格显示为空白。我的结果框架的前5个是:

_________________________________________________________
|var30   |var31   |var32   |var33  |var34  |var35 |var36|
--------------------------------------------------------
|-0.00586|0.13821 |0       |       |1      |      |     |
|3.87635 |2.86702 |2.51963 |8      |11     |2     |14   |
|3.78279 |2.54833 |2.45881 |       |2      |      |     |
|-0.10092|0       |0       |1      |1      |3     |1    |
|8.08797 |6.14486 |5.25718 |       |5      |      |     |
---------------------------------------------------------

But when i run result.show() command i am able to see the values.

_________________________________________________________
|var30   |var31   |var32   |var33  |var34  |var35 |var36|
--------------------------------------------------------
|-0.00586|0.13821 |0       |2      |1      |1     |6    |
|3.87635 |2.86702 |2.51963 |8      |11     |2     |14   |
|3.78279 |2.54833 |2.45881 |2      |2      |2     |12   |
|-0.10092|0       |0       |1      |1      |3     |1    |
|8.08797 |6.14486 |5.25718 |20     |5      |5     |34   |
---------------------------------------------------------

字符串
此外,空白显示在相同的细胞,每次我运行它。

exdqitrt

exdqitrt1#

使用此选项可将数据保存到s3 DataFrame.repartition(1).write.format("com.databricks.spark.csv").option("header", "true").save("s3n://Yourpath")

0sgqnhkj

0sgqnhkj2#

对于任何可能遇到过这个问题的人,我可以告诉我什么对我有用。我基于一些逻辑将一个 Dataframe (比如说inputDF)与另一个DF(delta DF)连接起来,并存储在输出 Dataframe (outDF)中。我得到了同样的错误,我可以在www.example.com()中看到一条记录outDF.show,但是当将此dataFrame写入Hive表或持久化outDF时,(使用outDF.persist(softLevel.MEMORY_AND_DISC))我无法看到那个特定的记录。
解决方案:-在将其与deltaDF连接之前,我将inputDF持久化(inputDF.persist(NodeLevel.MEMORY_AND_DISC))。之后,outDF.show()输出与outDF写入的hive表一致。
P.S:-我不知道这是如何解决这个问题的。如果有人能解释这一点,那就太棒了,但上述方法对我有效。

bq3bfh9z

bq3bfh9z3#

这个问题的唯一解决方案是再次刷新数据。我在使用Databricks笔记本将数据写入增量表时遇到了同样的问题。然而,一旦我刷新数据,我可以看到我的记录填充了之前显示为NULL的单元格。

相关问题