我有一个s3桶,里面有将近100k的gzip JSON文件。这些文件被称为[timestamp].json,而不是更合理的[timestamp].json.gz。我有其他进程使用它们,所以重命名不是一个选项,复制它们更不理想。我正在使用spark.read.json([pattern])来读取这些文件。如果我重命名文件名以包含.gz,这工作正常,但当扩展名只是.json时,它们无法读取。我有什么办法告诉斯巴克这些文件是gzip压缩的吗?
[timestamp].json
[timestamp].json.gz
spark.read.json([pattern])
.gz
.json
doinxwow1#
SparkSession可以直接读取压缩的json文件,就像这样:第一个月
xmq68pz92#
如果您需要从s3读取json.gz文件,以下是一个示例:
from pyspark.sql import SparkSessionspark = SparkSession \ .builder \ .appName("SparkExample") \ .getOrCreate()spark_context = spark.sparkContextspark_context._jsc.hadoopConfiguration().set("fs.s3a.access.key", <aws_key>)spark_context._jsc.hadoopConfiguration().set("fs.s3a.secret.key", <aws_secret>)spark_context._jsc.hadoopConfiguration().set("fs.s3a.aws.credentials.provider", "org.apache.hadoop.fs.s3a.SimpleAWSCredentialsProvider")df = spark.read.format('json').load('s3a://bucket/part-00045-7dfe93dd-576a-414b-b167-deaaf1d655f2.c000.json.gz')df.show()
from pyspark.sql import SparkSession
spark = SparkSession \
.builder \
.appName("SparkExample") \
.getOrCreate()
spark_context = spark.sparkContext
spark_context._jsc.hadoopConfiguration().set("fs.s3a.access.key", <aws_key>)
spark_context._jsc.hadoopConfiguration().set("fs.s3a.secret.key", <aws_secret>)
spark_context._jsc.hadoopConfiguration().set("fs.s3a.aws.credentials.provider", "org.apache.hadoop.fs.s3a.SimpleAWSCredentialsProvider")
df = spark.read.format('json').load('s3a://bucket/part-00045-7dfe93dd-576a-414b-b167-deaaf1d655f2.c000.json.gz')
df.show()
2条答案
按热度按时间doinxwow1#
SparkSession可以直接读取压缩的json文件,就像这样:
第一个月
xmq68pz92#
如果您需要从s3读取json.gz文件,以下是一个示例: