【问题标题】:Unable to infer schema when loading file加载文件时无法推断架构
【发布时间】:2020-11-18 00:22:06
【问题描述】:

以下代码在 pyspark shell 中运行时是工作文件,但在 spark-submit master-yarn 中执行时失败。

我在这里做错了什么?

   from datetime import date, timedelta
   import pandas as pd
   import os, sys
    startd = '20140101'
    endd=str(sys.argv[1])
    currd=str(sys.argv[2])
    spark = SparkSession.builder.getOrCreate()
    base = "s3://metadata_v1/DATE="
    dstart = pd.to_datetime(startd).date()
    dend = pd.to_datetime(endd).date()

    s3 = []
    days = [dstart + timedelta(days=x) for x in range((dend - dstart).days + 1) if (dstart + timedelta(days=x)).weekday() == 5]
    for i in days:
        s3.append(base + i.strftime('%Y-%m-%d'))
    
    data = spark.read.option("header", "True").option("delimiter", "|").option("basePath","s3://metadata_v1/").csv(s3)

错误:

pyspark.sql.utils.AnalysisException: u'Unable to infer schema for CSV. It must be specified manually.;'

【问题讨论】:

  • 为什么不手动传递架构?
  • header true 小写?
  • 架构影响会触发文件的整个加载/读取,这从 S3 开始很慢并且可能很昂贵。为什么不为最小的 CSV 做一次,打印它,然后在将来声明它。否则,您的下载时间会加倍并且 $

标签: python-3.x apache-spark pyspark


【解决方案1】:

当您的某些 csv 文件包含标题行时,可能会发生这种情况,在尝试转换某些列的数据类型时无法加载某些列。在读入数据框之前,您可以尝试删除每个 CSV 文件中的标题行。

【讨论】:

    猜你喜欢
    • 2017-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多