加载文件时无法推断架构

时间:2020-07-28 14:14:34

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

以下代码在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.;'

1 个答案:

答案 0 :(得分:0)

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