Python PySpark使用两种不同的文件类型从s3中的zip文件读取csv

Python PySpark使用两种不同的文件类型从s3中的zip文件读取csv,python,apache-spark,amazon-s3,pyspark,Python,Apache Spark,Amazon S3,Pyspark,我有一个包含CSV和json映射文件的zip文件。我想将csv读入spark数据帧,将json映射文件读入字典。我已经做了后面的部分,这样做: import boto3 obj = s3.get_object(Bucket='bucket', Key='key') z = zipfile.ZipFile(io.BytesIO(obj["Body"].read())) csvjson = json.loads(z.open(files[1]).read().decode(

我有一个包含CSV和json映射文件的zip文件。我想将csv读入spark数据帧,将json映射文件读入字典。我已经做了后面的部分,这样做:

import boto3

obj = s3.get_object(Bucket='bucket', Key='key')

z = zipfile.ZipFile(io.BytesIO(obj["Body"].read()))

csvjson = json.loads(z.open(files[1]).read().decode('utf-8'))
通常,我希望执行以下操作以从csv文件获取df:

dfRaw = spark.read \
    .format("text") \
    .option("multiLine","true") \
    .option("inferSchema","false") \
    .option("header","true") \
    .option("ignoreLeadingWhiteSpace","true") \
    .option("ignoreTrailingWhiteSpace","true") \
    .load(z.open(files[0]).read().decode('utf-8'))

但是,这显然不起作用,因为load需要的是文件路径,而不是行本身。如何将此文件从zip文件读入spark数据框?

由于您手动解压缩CSV文件并以字符串形式获取输出,因此可以按如下方式使用parallelize

z=zipfile.ZipFileio.BytesIOobj[Body]。读取 csv=[l.decode'utf-8'。替换z.openfiles[0]中l的'\n'。读取行] 火花 .sparkContext .parallelizecsv .toDFT.StringType 使用列'value',F.from_csv'value',ID int,Trxn_Date string'您的模式显示在此处 。选择“值。*” .show10,错 输出 +--+-----+ |ID | Trxn|u日期| +--+-----+ |空| Trxn_日期| |100 |2021-03-24| |133 |2021-01-22| +--+-----+
使用sc.parallelize加载它怎么样。。。然后使用?@pltc你能举个例子吗?我想我挂在这里的部分是从zip档案中访问它