【发布时间】: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