pyspark df.write写(parquet)到S3但一半列中的数据丢失

时间:2019-06-18 03:25:26

标签: python amazon-s3 pyspark

使用带有4名工人和1名主人的EMR

  • 发布标签:emr-5.24.0
  • Hadoop发行版:Amazon 2.8.5
  • 应用程序:Spark 2.4.2,Hive 2.3.4

我能够处理我的数据并在pyspark中创建正确的数据框。但是,当我将df写(拼写)到S3时,文件确实确实放在S3中的正确位置,但是7列中的3列突然丢失了数据。

任何人都可以解释我需要解决的问题吗?这是相关的代码和结果屏幕截图。为了保护隐私,我将屏幕截图中的某些列重命名了。

我的代码:

# For multi tables
df_multi.show(5)
df_multi.printSchema()
print("\n At line 578, after show(), writing to EDL\n")
df_multi.write.mode("append").parquet(multi_s3_bucket_dir)
print("\n  SCRIPT COMPLETED  \n")

脚本运行时输出的屏幕截图。我以nohup的身份运行它,并将stdin&sterr重定向到一个文件,以便稍后查看: screenshot while running

这是输出,使用雅典娜从S3中读取: Athena query

1 个答案:

答案 0 :(得分:0)

Mea culpa。问题解决了。我在df中的列名与Athena DDL中的列名不完全匹配。由于镶木地板是“读取模式”,因此系统创建了一个与df相匹配的架构,但是它只能导入那些名称与DID匹配的列,其余的保留为空。

经验教训。