Python Pyspark 脚本在整个数据集上失败,但适用于单个文件

Posted

技术标签:

【中文标题】Python Pyspark 脚本在整个数据集上失败,但适用于单个文件【英文标题】:Python Pyspark script fails on whole dataset but works on single file 【发布时间】:2019-10-31 09:24:57 【问题描述】:

我写了一个 python pyspark 脚本,可以从数据中提取特定的特征。该脚本在单个 file.json 上运行良好,并返回一个数据框,其中包含我的所有功能作为输出。我的问题是我需要一次在整个数据集上运行脚本(包含我的 json 文件的文件夹)。任何人都可以提出一个好的方法吗?谢谢

代码示例:

spark= SparkSession.builder.appName('mySparkKPIs').master('local').getOrCreate()
finalDF = spark.read.json('final.json')
finalDF.createOrReplaceTempView("final")
######
treatment of different dataframes##"
F=df1.join(df2, on="num", how="inner")\
    .join(df3, on="num", how="inner")\
        .join(df4, on="num", how="inner")\
            .show()

【问题讨论】:

您未能展示它在整个数据集上的失败程度。还是只是问题标题具有误导性? 我刚刚添加了错误的屏幕截图... @HristoIliev:为了让我的脚本从一个 file.json 工作到整个数据集,我尝试了两件事:A) 尝试遍历所有数据集 ==> 不起作用,抛出错误如上 。 B)尝试将文件夹路径添加到 spark.read.json("") 中的数据集。 ==> 也不起作用。抛出与上面相同的错误,而且它有点棘手,因为它是用 scala 编写的,而我的脚本是 python 的。 你确定你所有的 json 文件都有相同的架构吗? 【参考方案1】:

你可以如下使用:

finalDF = spark.read.json('/path/to/json/directory/*.json')

【讨论】:

@ 它说:调用 o***.json 时发生错误 错误表示 json 文件中的字符无效。你能检查输入的json文件吗?此外,您可以通过单独提供架构来读取 json。 我不明白,当我分别指定路径时,它对它们中的每一个都有效,但不会遍历所有路径....这样做时,我得到上面的错误。 @HoussemBZYWISH,如果你专门处理o542.json,你确定它有效吗?因为该错误确实表明该文件包含非 UTF-32 数据。如果您的文件编码不同,则需要使用"encoding" reader 选项指定。

以上是关于Python Pyspark 脚本在整个数据集上失败,但适用于单个文件的主要内容,如果未能解决你的问题,请参考以下文章

在 pyspark 中使用 zip

Python脚本会使用pyspark在spark中工作吗

AWS 设置以在 Apache pyspark env 上运行 python 脚本

如何在 Pyspark 中运行 Python 脚本

我可以在整个数据集上使用 StandardScaler(),还是应该分别在训练集和测试集上计算?

PySpark - 发送附有 CSV 的电子邮件,整个 CSV 显示在一行上