首页 > 解决方案 > 在 pyspark 中通过检查加载数据框给了我空的数据框

问题描述

我正在尝试使用 pyspark 在数据框中加载数据。这些文件采用镶木地板格式。我正在使用以下代码

from pyspark.conf import SparkConf
from pyspark.sql import SparkSession
from pyspark.sql.types import StructType,StructField,IntegerType,StringType,BooleanType,DateType,TimestampType,LongType,FloatType,DoubleType,ArrayType,ShortType
from pyspark.sql import HiveContext
from pyspark.sql.functions import lit
import datetime
from pyspark import SparkContext
from pyspark import SQLContext
from datetime import datetime
from datetime import *
from datetime import date, timedelta as td
import datetime
from datetime import datetime
from pyspark import SparkContext
from pyspark.sql import HiveContext

import pandas as pd
daterange = pd.date_range('2019-12-01','2019-12-31')

df = sqlContext.createDataFrame(sc.emptyRDD())

for process_date in daterange:
try:
    name = 's3://location/process_date={}'.format(process_date.strftime("%Y-%m-%d"))+'/'
    print(name)
    x = spark.read.parquet(name)
    x = x.withColumn('process_date',lit(process_date.strftime("%Y-%m-%d")))
    x.show()
    df = df.union(x)
except:
    print("File doesnt exist for"+str(process_date.strftime("%Y-%m-%d")))

但是当我运行此代码时,我得到的输出 df 是一个空数据集,尽管有某些日期的数据,但我在所有日期范围内都收到异常打印消息。谁能指导我做错了什么?

标签: pythonpandasapache-sparkpysparkapache-spark-sql

解决方案


我认为问题在于工会和一个过于宽泛的除外条款。
只有当要联合的数据帧的模式相同时,联合才会起作用。
因此emptyDF.union(nonEmtpy)会引发您在 except 子句中捕获的错误。


推荐阅读