在 Pyspark 中使用循环加入不同的 DataFrame
Join different DataFrames using loop in Pyspark
我在一个文件中有 5 个 CSV 文件,想将它们加入 Pyspark 中的一个数据框中:我使用下面的 代码:
name_file =['A', 'B', 'C', 'D', 'V']
for n in name_file:
n= spark.read.csv(fullpath+n+'.csv'
,header=False,
inferSchema= True)
full_data=full_data.join(n,["id"])
错误:我得到了一个意外的结果 > 最后一个数据帧与自身连接。
预期结果:应该有 6 列,每个 CSV 有 2 个数据框,其中一个与其他数据框相同。联接应该在此列上。因此,最终的数据框应该有一个公共列和每个 CSV 文件中的 5 个特殊列。
代码似乎有几处错误,或者您可能没有提供完整的代码。
- 你定义完整路径了吗?
- 你设置了 header=False 那么 spark 怎么知道有一个
“id”列?
- 您在 for 循环下的缩进看起来不对。
- full_data还没有定义,你是怎么用的
for循环中评估的右侧?我怀疑你有
将其初始化为第一个 csv 文件,然后尝试加入
再次使用第一个 csv。
我 运行 对下面的代码进行了一次小测试,它对我有用并解决了我上面提出的问题。您可以根据需要进行调整。
fullpath = '/content/sample_data/'
full_data = spark.read.csv(fullpath+'Book1.csv'
,header=True,
inferSchema= True)
name_file =['Book2', 'Book3']
for n in name_file:
n= spark.read.csv(fullpath+n+'.csv'
,header=True,
inferSchema= True)
full_data=full_data.join(n,["id"])
full_data.show(5)
我在一个文件中有 5 个 CSV 文件,想将它们加入 Pyspark 中的一个数据框中:我使用下面的 代码:
name_file =['A', 'B', 'C', 'D', 'V']
for n in name_file:
n= spark.read.csv(fullpath+n+'.csv'
,header=False,
inferSchema= True)
full_data=full_data.join(n,["id"])
错误:我得到了一个意外的结果 > 最后一个数据帧与自身连接。
预期结果:应该有 6 列,每个 CSV 有 2 个数据框,其中一个与其他数据框相同。联接应该在此列上。因此,最终的数据框应该有一个公共列和每个 CSV 文件中的 5 个特殊列。
代码似乎有几处错误,或者您可能没有提供完整的代码。
- 你定义完整路径了吗?
- 你设置了 header=False 那么 spark 怎么知道有一个 “id”列?
- 您在 for 循环下的缩进看起来不对。
- full_data还没有定义,你是怎么用的 for循环中评估的右侧?我怀疑你有 将其初始化为第一个 csv 文件,然后尝试加入 再次使用第一个 csv。
我 运行 对下面的代码进行了一次小测试,它对我有用并解决了我上面提出的问题。您可以根据需要进行调整。
fullpath = '/content/sample_data/'
full_data = spark.read.csv(fullpath+'Book1.csv'
,header=True,
inferSchema= True)
name_file =['Book2', 'Book3']
for n in name_file:
n= spark.read.csv(fullpath+n+'.csv'
,header=True,
inferSchema= True)
full_data=full_data.join(n,["id"])
full_data.show(5)