python - 在 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 是一个空数据集,尽管有某些日期的数据,但我在所有日期范围内都收到异常打印消息。谁能指导我做错了什么?
解决方案
我认为问题在于工会和一个过于宽泛的除外条款。
只有当要联合的数据帧的模式相同时,联合才会起作用。
因此emptyDF.union(nonEmtpy)
会引发您在 except 子句中捕获的错误。
推荐阅读
- pdf - ghostscript:丢失的pdf原始嵌入字体
- office-js - 示例 - Microsoft 关于通过 Microsoft Commercial Marketplace 将您的 Office 365 加载项货币化
- python - 如何使用 DBSCAN 找到集群成员之间的最大/最小距离?
- session-storage - 如何从会话存储中获取某些值?可能吗?
- matplotlib - X, Y 中的纬度经度图
- google-cloud-dataflow - Dataflow/Apache Beam:如何从@FinishBundle 访问状态?
- entity-framework-6 - 实体框架代码优先迁移:使用 down() 方法恢复迁移不起作用
- c++ - GCC 警告形成偏移 [X1, X2] 超出范围 [0, X3]
- android - 如何使用 Play Install Referrer Library 将推荐人从 Playstore 获取到应用程序?
- ibeacon-android - 可能会延迟检测信标