我正在尝试使用AWS Glue将20 GB JSON gzip文件转换为parquet。
我已经设置了一个作业使用Pyspark与下面的代码。
我收到了这个日志警告消息:
第一个月
我想知道是否有一种方法来分割/分块文件?我知道我可以用pandas来做,但不幸的是这需要太长的时间(12+小时)。
import sys
from awsglue.transforms import *
from awsglue.utils import getResolvedOptions
from pyspark.context import SparkContext
import pyspark.sql.functions
from pyspark.sql.functions import col, concat, reverse, translate
from awsglue.context import GlueContext
from awsglue.job import Job
glueContext = GlueContext(SparkContext.getOrCreate())
test = glueContext.create_dynamic_frame_from_catalog(
database="test_db",
table_name="aws-glue-test_table")
# Create Spark DataFrame, remove timestamp field and re-name other fields
reconfigure = test.drop_fields(['timestamp']).rename_field('name', 'FirstName').rename_field('LName', 'LastName').rename_field('type', 'record_type')
# Create pyspark DF
spark_df = reconfigure.toDF()
# Filter and only return 'a' record types
spark_df = spark_df.where("record_type == 'a'")
# Once filtered, remove the record_type column
spark_df = spark_df.drop('record_type')
spark_df = spark_df.withColumn("LastName", translate("LastName", "LName:", ""))
spark_df = spark_df.withColumn("FirstName", reverse("FirstName"))
spark_df.write.parquet("s3a://aws-glue-bucket/parquet/test.parquet")
字符串
2条答案
按热度按时间mi7gmzs61#
Spark不会并行阅读单个gzip文件。但是,您可以将其拆分为块。
另外,Spark在阅读gzip文件时非常慢(因为它没有并行化)。你可以这样做来加速它:
字符串
ufj5ltwl2#
我有一个单一的大不可分割的CSV文件,这是Gzip压缩这个问题。我相信接受的答案只适用于一个文件列表。
我使用新的AWS Glue for ray和AWS Wrangler批量读取分区,如下所示:
字符串
awswrangler[modin]必须按照glue文档中的指导使用--pip-install添加到作业中。