gpt4 book ai didi

apache-spark - Parquet 文件是否保留 Spark DataFrames 的行顺序?

转载 作者:行者123 更新时间:2023-12-04 19:02:54 24 4
gpt4 key购买 nike

当我将 Spark DataFrame 保存为 Parquet 文件然后将其读回时,生成的 DataFrame 的行与原始数据不同,如下面的 session 所示。这是 DataFrames 或 Parquet 文件的“功能”吗?以保留行顺序的方式保存 DataFrame 的最佳方法是什么?

>>> import numpy as np
>>> import pandas as pd
>>> pdf = pd.DataFrame(np.random.random((10,2)))
>>> pdf
0 1
0 0.191519 0.622109
1 0.437728 0.785359
2 0.779976 0.272593
3 0.276464 0.801872
4 0.958139 0.875933
5 0.357817 0.500995
6 0.683463 0.712702
7 0.370251 0.561196
8 0.503083 0.013768
9 0.772827 0.882641
>>> df = sqlContext.createDataFrame(pdf)
>>> df.show()
+-------------------+--------------------+
| 0| 1|
+-------------------+--------------------+
| 0.1915194503788923| 0.6221087710398319|
| 0.4377277390071145| 0.7853585837137692|
| 0.7799758081188035| 0.2725926052826416|
| 0.2764642551430967| 0.8018721775350193|
| 0.9581393536837052| 0.8759326347420947|
|0.35781726995786667| 0.5009951255234587|
| 0.6834629351721363| 0.7127020269829002|
|0.37025075479039493| 0.5611961860656249|
| 0.5030831653078097|0.013768449590682241|
| 0.772826621612374| 0.8826411906361166|
+-------------------+--------------------+
>>> df.write.parquet('test.parquet')
>>> df2 = sqlContext.read.parquet('test.parquet')
>>> df2.show()
+-------------------+--------------------+
| 0| 1|
+-------------------+--------------------+
| 0.6834629351721363| 0.7127020269829002|
|0.37025075479039493| 0.5611961860656249|
| 0.5030831653078097|0.013768449590682241|
| 0.772826621612374| 0.8826411906361166|
| 0.7799758081188035| 0.2725926052826416|
| 0.2764642551430967| 0.8018721775350193|
| 0.1915194503788923| 0.6221087710398319|
| 0.4377277390071145| 0.7853585837137692|
| 0.9581393536837052| 0.8759326347420947|
|0.35781726995786667| 0.5009951255234587|
+-------------------+--------------------+

最佳答案

这看起来像是 Spark 中分区的结果(以及 show() 的实现)。函数show()基本上围绕对 take() 的调用包装了一些漂亮的格式。并且对 take 的工作原理有很好的解释 here .由于对 show() 的两次调用的初始读取分区可能不同。 ,您将看到不同的值。

关于apache-spark - Parquet 文件是否保留 Spark DataFrames 的行顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33020163/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com