在s3中使用pyspark合并多个小json文件[重复]

     2023-04-17     93

关键词:

【中文标题】在s3中使用pyspark合并多个小json文件[重复]【英文标题】:merge multiple small json files using pyspark in s3 [duplicate] 【发布时间】:2020-02-15 23:24:13 【问题描述】:

我是 spark 的新手。

我的 s3 存储桶的子目录中有多个小的 json 文件 (1kb)。我想合并单个目录中存在的所有文件。使用 pyspark 是否有任何优化方法。

目录结构: 地区/年/月/日/小时/multiple_json_files

如上所述,我有许多目录,想将所有文件合并到一个目录中。

P.S:我尝试过使用 python 但它需要更多时间,尝试过 s3distcp 但结果相同。

谁能帮我解决这个问题

【问题讨论】:

region/year/month/day/hour/*/*/*/*/*/ 使用通配符。 【参考方案1】:

你可以通过下面的代码来实现

首先我们需要确保加载 spark 时 hadoop aws 包可用:

import os

os.environ['PYSPARK_SUBMIT_ARGS'] = "--packages=org.apache.hadoop:hadoop-aws:2.7.3 pyspark-shell"

接下来我们需要让 pyspark 在 jupyter notebook 中可用:

import findspark
findspark.init()
from pyspark.sql import SparkSession

我们需要 aws 凭证才能访问 s3 存储桶。我们可以使用 configparser 包从标准 aws 文件中读取凭证。

 import configparser
 config = configparser.ConfigParser()
 config.read(os.path.expanduser("~/.aws/credentials"))
 access_id = config.get(aws_profile, "aws_access_key_id") 
 access_key = config.get(aws_profile, "aws_secret_access_key")

我们可以启动 spark 会话并将 aws 凭据传递给 hadoop 配置:

 sc=spark.sparkContext
 hadoop_conf=sc._jsc.hadoopConfiguration()
 hadoop_conf.set("fs.s3n.impl", "org.apache.hadoop.fs.s3native.NativeS3FileSystem")
 hadoop_conf.set("fs.s3n.awsAccessKeyId", access_id)
 hadoop_conf.set("fs.s3n.awsSecretAccessKey", access_key)

终于可以读取数据并显示出来了:

 df=spark.read.json("s3n://path_of_location/*.json")
 df.show()

【讨论】:

使用胶水(Python/Pyspark)通过配置文件循环从源到s3的多个表?

】使用胶水(Python/Pyspark)通过配置文件循环从源到s3的多个表?【英文标题】:loopthroughmultipletablesfromsourcetos3usingglue(Python/Pyspark)throughconfigurationfile?【发布时间】:2021-10-2912:31:42【问题描述】:我正在寻找使用胶水将多个表从关... 查看详情

无法使用本地 PySpark 从 S3 读取 json 文件

】无法使用本地PySpark从S3读取json文件【英文标题】:UnabletoreadjsonfilefromS3usinglocalPySpark【发布时间】:2021-07-1020:39:09【问题描述】:我正在尝试在本地使用PySpark从S3读取json文件。这是代码importosimportconfigparserfrompyspark.sqlimportSparkSe... 查看详情

PySpark:在 Spark 数据框中读取多个 XML 文件(s3 路径列表)

】PySpark:在Spark数据框中读取多个XML文件(s3路径列表)【英文标题】:PySpark:ReadmultipleXMLfiles(listofs3paths)inSparkdataframe【发布时间】:2020-08-0709:50:39【问题描述】:正如问题所暗示的,我在列表中有一个s3路径列表s3_paths=["s3a://some... 查看详情

将多个 S3 文件夹/路径读入 PySpark

】将多个S3文件夹/路径读入PySpark【英文标题】:ReadingMultipleS3Folders/PathsIntoPySpark【发布时间】:2017-09-1513:03:08【问题描述】:我正在使用PySpark进行大数据分析。我可以使用以下命令导入存储在特定存储桶的特定文件夹中的所有CS... 查看详情

在 aws 胶水 pyspark 作业中从 s3 加载 JSON

】在aws胶水pyspark作业中从s3加载JSON【英文标题】:LoadJSONfroms3insideawsgluepysparkjob【发布时间】:2018-08-1413:31:50【问题描述】:我正在尝试从胶水pyspark脚本中的s3存储桶中检索JSON文件。我正在aws胶水内的作业中运行此功能:defrun(sp... 查看详情

从AWS Lambda python函数将多个JSON文件合并到S3中的单个JSON文件

】从AWSLambdapython函数将多个JSON文件合并到S3中的单个JSON文件【英文标题】:MergingmultipleJSONfilesintosingleJSONfileinS3fromAWSLambdapythonfunction【发布时间】:2022-01-2320:43:27【问题描述】:我对我的工作感到震惊,我的要求是将多个json文件... 查看详情

Pyspark 从 S3 存储桶的子目录中读取所有 JSON 文件

】Pyspark从S3存储桶的子目录中读取所有JSON文件【英文标题】:PysparkreadallJSONfilesfromasubdirectoryofS3bucket【发布时间】:2020-10-1722:19:04【问题描述】:我正在尝试从名为hello的S3存储桶中的名为world的子目录中读取JSON文件。当我使用bo... 查看详情

如何在使用pyspark从s3读取文件时读取文件名

】如何在使用pyspark从s3读取文件时读取文件名【英文标题】:Howtoreadthefilenamewhilereadingthefilesfroms3usingpyspark【发布时间】:2021-11-1617:11:19【问题描述】:我有一个用例,在s3中有多个文件,我正在阅读如下:df1=spark.read.csv("s3://bucke... 查看详情

如何使用给定的reduce函数基于pyspark中的字段合并多个JSON数据行

】如何使用给定的reduce函数基于pyspark中的字段合并多个JSON数据行【英文标题】:HowtomergemultipleJSONdatarowsbasedonafieldinpysparkwithagivenreducefunction【发布时间】:2016-08-1022:56:50【问题描述】:如何使用下面的合并功能与pyspark合并JSON数... 查看详情

使用 Pyspark 在 s3 中写入镶木地板文件时出错

】使用Pyspark在s3中写入镶木地板文件时出错【英文标题】:Errorwritingparquetfileins3withPyspark【发布时间】:2020-07-1009:01:38【问题描述】:我正在尝试读取一些表(parquet文件)并进行一些连接并将它们写入S3中的parquet格式,但是我遇... 查看详情

使用databricks中的pyspark将多个json文件从blob存储读取到数据帧

】使用databricks中的pyspark将多个json文件从blob存储读取到数据帧【英文标题】:Readmultiplejsonfilesfromblobstoragetodataframeusingpysparkindatabricks【发布时间】:2021-12-1711:18:36【问题描述】:我正在尝试将所有json文件存储在blob存储的子文件... 查看详情

使用 pyspark,如何将文件中单行的多个 JSON 文档读入数据框?

】使用pyspark,如何将文件中单行的多个JSON文档读入数据框?【英文标题】:Usingpyspark,howdoIreadmultipleJSONdocumentsonasinglelineinafileintoadataframe?【发布时间】:2018-07-1220:52:03【问题描述】:使用Spark2.3,我知道我可以像这样读取JSON文档... 查看详情

如何使用 pyspark 在 aws 胶水中展平嵌套 json 中的数组?

】如何使用pyspark在aws胶水中展平嵌套json中的数组?【英文标题】:Howtoflattenanarrayinanestedjsoninawsglueusingpyspark?【发布时间】:2019-10-0415:51:11【问题描述】:我正在尝试将JSON文件展平,以便能够将其全部加载到AWSGlue中的PostgreSQL中... 查看详情

如何在 AWS Glue pyspark 脚本中合并两个节点

】如何在AWSGluepyspark脚本中合并两个节点【英文标题】:HowtomergetwonodesinAWSGluepysparkscript【发布时间】:2018-04-1704:59:43【问题描述】:我有一堆JSON文件需要处理。JSON文件的结构(例如简化)是(当awsgluecrawler在这些json文件上运行... 查看详情

在 s3 pyspark 作业中创建单个镶木地板文件

】在s3pyspark作业中创建单个镶木地板文件【英文标题】:creatingasingleparquetfileins3pysparkjob【发布时间】:2020-12-0907:00:46【问题描述】:我编写了一个pyspark程序,它从cassandra读取数据并写入awss3。在写入s3之前,我必须执行repartition(... 查看详情

从s3读取json文件以使用glueContext.read.json粘合pyspark会给出错误的结果

】从s3读取json文件以使用glueContext.read.json粘合pyspark会给出错误的结果【英文标题】:readingjsonfilesfroms3togluepysparkwithglueContext.read.jsongiveswrongresult【发布时间】:2020-01-0320:28:44【问题描述】:有谁知道为什么glueContext.read.json给我一... 查看详情

使用 pyspark 将镶木地板文件(在 aws s3 中)存储到 spark 数据框中

】使用pyspark将镶木地板文件(在awss3中)存储到spark数据框中【英文标题】:storeparquetfiles(inawss3)intoasparkdataframeusingpyspark【发布时间】:2021-06-0917:01:54【问题描述】:我正在尝试从我的s3存储桶中的特定文件夹中读取数据。此数... 查看详情

将多个 JSON 文件合并为单个 JSON 和 parquet 文件

】将多个JSON文件合并为单个JSON和parquet文件【英文标题】:MergemultipleJSONfiletosingleJSONandparquetfile【发布时间】:2020-05-0116:44:02【问题描述】:具有100个JSON的源S3位置所有JSON文件都需要合并为单个JSON文件。即非part-0000...文件输出... 查看详情