[英]How to merge dataframes in Databricks notebook using Python / Pyspark
我正在使用 Databricks 笔记本提取 gz 压缩的 csv 文件并加载到 dataframe object 中。 我在下面的第 2 部分遇到问题。
第 1 部分:将压缩文件加载到 dataframe 运行良好...
%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)
...返回以下错误:
TypeError:无法连接类型为'<class'pyspark.sql.dataframe.DataFrame'>'的object; 只有 Series 和 DataFrame 对象有效
关于尝试修改我如何合并数据框的任何建议? 我将有多达 20 个文件要合并,其中所有列都是相同的。
如果对象很大,我认为最好的方法不是从pyspark
转换为pandas
,而是在pyspark
中执行等效的concat
。
请注意,自 Spark“2.0.0”版本以来, unionAll()
已被弃用,并替换为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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.