所以,基础是:
以下是我的导入:
from pyspark.sql.functions import *
from pyspark.sql import SQLContext
sqlContext = SQLContext(sc)
fileDirectory = 'data/'
以下是实际代码:
for fname in os.listdir(fileDirectory):
sqlContext.read.format("csv").\
option("header", "true").\
option("inferSchema", "true").\
load(fname)
df_app = app_dat_df
df_app.createOrReplaceTempView(fname)
但是我收到以下错误消息:
AnalysisException: u'Unable to infer schema for CSV. It must be specified manually.;'
它似乎没有找到我传递文件的方式的问题(很棒),但它不会让我推断模式。当我手动浏览每个文件时,这从来就不是问题。
有人可以给我一些关于我可以改进它们/让它运行的指示吗?
很多,非常感谢!
答案 0 :(得分:0)
由于inferSchema
抛出错误,您应手动指定csv数据的架构。
同样@Marie提到你需要稍微修改你的加载语法。
from pyspark.sql.types import *
customSchema = StructType([
StructField("string_col", StringType(), True),
StructField("integer_col", IntegerType(), True),
StructField("double_col", DoubleType(), True)])
fileDirectory = 'data/'
for fname in os.listdir(fileDirectory):
df_app = sqlContext.read.format("csv").\
option("header", "true"). \
schema(customSchema). \
load(fileDirectory + fname)
希望这有帮助!
如果它解决了您的问题,请不要告诉我们。)