pyspark 我可以告诉spark.read.json我的文件是gzip格式的吗?

8wtpewkr  于 2023-01-01  发布在  Spark
关注(0)|答案(2)|浏览(223)

我有一个s3桶,里面有将近100k的gzip JSON文件。
这些文件被称为[timestamp].json,而不是更合理的[timestamp].json.gz
我有其他进程使用它们,所以重命名不是一个选项,复制它们更不理想。
我正在使用spark.read.json([pattern])来读取这些文件。如果我重命名文件名以包含.gz,这工作正常,但当扩展名只是.json时,它们无法读取。
我有什么办法告诉斯巴克这些文件是gzip压缩的吗?

doinxwow

doinxwow1#

SparkSession可以直接读取压缩的json文件,就像这样:
第一个月

xmq68pz9

xmq68pz92#

如果您需要从s3读取json.gz文件,以下是一个示例:

  1. from pyspark.sql import SparkSession
  2. spark = SparkSession \
  3. .builder \
  4. .appName("SparkExample") \
  5. .getOrCreate()
  6. spark_context = spark.sparkContext
  7. spark_context._jsc.hadoopConfiguration().set("fs.s3a.access.key", <aws_key>)
  8. spark_context._jsc.hadoopConfiguration().set("fs.s3a.secret.key", <aws_secret>)
  9. spark_context._jsc.hadoopConfiguration().set("fs.s3a.aws.credentials.provider", "org.apache.hadoop.fs.s3a.SimpleAWSCredentialsProvider")
  10. df = spark.read.format('json').load('s3a://bucket/part-00045-7dfe93dd-576a-414b-b167-deaaf1d655f2.c000.json.gz')
  11. df.show()

相关问题