如何使用 Python / Pyspark 在 Databricks notebook 中合并数据帧
How to merge dataframes in Databricks notebook using Python / Pyspark
我正在使用 Databricks notebook 提取 gz 压缩的 csv 文件并加载到数据框对象中。我在阅读下面的第 2 部分时遇到问题。
第 1 部分:将压缩文件加载到数据框中运行很好...
%python
df1 = spark.read.option("header",True).option("delimiter", "|").csv("dbfs:/model/.../file_1.csv.gz")
df2 = spark.read.option("header",True).option("delimiter", "|").csv("dbfs:/model/.../file_2.csv.gz")
第 2 部分:尝试合并数据帧...
%python
import pandas as pd
df =pd.concat([df1, df2], ignore_index=True)
df.show(truncate=False)
...returns 出现以下错误:
TypeError:无法连接类型为“”的对象;只有 Series 和 DataFrame 对象有效
对于尝试修改我合并数据帧的方式有什么建议吗?我将最多合并 20 个文件,其中所有列都相同。
如果对象很大,我认为最好的方法不是从 pyspark
转换为 pandas
,而是在 pyspark
中执行相当于 concat
的操作.
请注意, unionAll()
自 Spark “2.0.0” 版本以来已弃用,并替换为 union()
https://sparkbyexamples.com/pyspark/pyspark-union-and-unionall/
我相信你可以做到:
from functools import reduce
from pyspark.sql import DataFrame
dfs = [df1,df2]
merged = reduce(DataFrame.union, dfs)
当然要查看它:
merged.show(truncate=False) # or display(merged)
我正在使用 Databricks notebook 提取 gz 压缩的 csv 文件并加载到数据框对象中。我在阅读下面的第 2 部分时遇到问题。
第 1 部分:将压缩文件加载到数据框中运行很好...
%python
df1 = spark.read.option("header",True).option("delimiter", "|").csv("dbfs:/model/.../file_1.csv.gz")
df2 = spark.read.option("header",True).option("delimiter", "|").csv("dbfs:/model/.../file_2.csv.gz")
第 2 部分:尝试合并数据帧...
%python
import pandas as pd
df =pd.concat([df1, df2], ignore_index=True)
df.show(truncate=False)
...returns 出现以下错误:
TypeError:无法连接类型为“
对于尝试修改我合并数据帧的方式有什么建议吗?我将最多合并 20 个文件,其中所有列都相同。
如果对象很大,我认为最好的方法不是从 pyspark
转换为 pandas
,而是在 pyspark
中执行相当于 concat
的操作.
请注意, unionAll()
自 Spark “2.0.0” 版本以来已弃用,并替换为 union()
https://sparkbyexamples.com/pyspark/pyspark-union-and-unionall/
我相信你可以做到:
from functools import reduce
from pyspark.sql import DataFrame
dfs = [df1,df2]
merged = reduce(DataFrame.union, dfs)
当然要查看它:
merged.show(truncate=False) # or display(merged)