我是一个很新的pyspark,但熟悉Pandas。我有一个pyspark数据框架
# instantiate Spark
spark = SparkSession.builder.getOrCreate()
# make some test data
columns = ['id', 'dogs', 'cats']
vals = [
(1, 2, 0),
(2, 0, 1)
]
# create DataFrame
df = spark.createDataFrame(vals, columns)
我想添加一个新的Row(4,5,7),所以它会输出:
df.show()
+---+----+----+
| id|dogs|cats|
+---+----+----+
| 1| 2| 0|
| 2| 0| 1|
| 4| 5| 7|
+---+----+----+
4条答案
按热度按时间6l7fqoea1#
正如thebluephantom已经说过的那样,联合是一条路。我只是回答你的问题,给你一个给予的例子:
也请看看数据块常见问题解答:https://kb.databricks.com/data/append-a-row-to-rdd-or-dataframe.html
zi8p0yeb2#
也可以使用collect方法将行追加到嵌套框中。collect()函数将点阵转换为列表,你可以直接将数据追加到列表中,然后再将列表转换为点阵。
我的spark框架叫做df,
转换这个框架到列表使用收集
将新行附加到此列表
将此列表转换为嵌套框架
gdrx4gfi3#
从我做的事情,使用union,显示一个块部分编码-你需要适应当然你自己的情况:
DF与自身的结合是一条路要走。
j5fpnvbx4#
另一种方法是使用分区的parquet格式,并为您想要附加的每个子框架添加一个额外的parquet文件。通过这种方式,您可以创建(数百、数千、数百万)个parquet文件,当您稍后读取目录时,spark会将它们作为一个联合体读取。
本例使用Pyarrow
注意我还展示了如何编写一个没有分区的parquet(例如.parquet),如果你已经知道你想把这个parquet文件放在哪里的话。
之后阅读输出
你应该看看这样的东西
如果你再次首尾相连地运行相同的东西,你应该会看到像这样的重复(因为所有以前的parquet文件仍然存在,所以spark联合它们)。