以下代码在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.;'
答案 0 :(得分:0)
当您的某些csv文件包含标题行时,可能会发生这种情况;当尝试转换某些列的数据类型时,某些列将无法加载。您可以尝试先删除每个CSV文件中的标题行,然后再读入数据框。