Как прочитать файл построчно из паркета S3, отфильтровать и сохранить построчно в другой сегмент S3? - PullRequest
0 голосов
/ 22 января 2020

У меня есть корзина с несколькими файлами паркета и миллиарды записей в корзине S3.

Я хочу иметь возможность читать всю папку, фильтровать построчно (например, если строка содержит указанный c элемент - отфильтровать) и сохранить его в другом месте S3. Поскольку все записи имеют несколько гигабайт - я хочу читать и сохранять их построчно в другое ведро S3, если это возможно.

У меня есть только среда Pyspark (Glue), чтобы сделать это, поэтому я не могу сделать это ни на моем ноутбуке, ни на EC2 (по соображениям безопасности).

В Linux - я легко могу добиться этого с помощью:
cat file.csv | grep -v "exclude value" > file2.csv

Как добиться этого в S3?

1 Ответ

1 голос
/ 22 января 2020

попробуйте ниже код, который будет работать для вас.

#read data from s3 and store it to dynamicframe and then convert dataframe using .toDF() function
datasource0 = glueContext.create_dynamic_frame.from_options( connection_type = "s3", connection_options = {"paths": "s3://glue-sample-target/input-dir/medicare_parquet/*.parquet"}, format = "parquet", transformation_ctx = "datasource0").toDF()

#now filter the data based on column
filterdf=datasource0.filter(col("SOURCE") == "ABC")

#again convert dataframe to dynamicframe
filterdf_dynamic_frame = DynamicFrame.fromDF(filterdf, glueContext, "filterdf_dynamic_frame")

#now will write to s3
glueContext.write_dynamic_frame.from_options(
   frame = filterdf_dynamic_frame,
   connection_type = "s3",
   connection_options = {"path": "s3://glue-sample-target/output-dir/medicare_parquet"},
   format = "parquet")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...