我必须验证从 S3 读取到 Glue 的固定宽度文件。 我有每列的长度,我必须编写一个粘合作业来验证这些文件。
如何有效地检查每行的长度以过滤掉 total_length
不正确的记录?
读取此类文件的最佳方式是什么?
我尝试将其作为 CSV 读取到动态框架中的一个 col0
中,并尝试使用 FILTER
过滤掉 length
但这给了我一个字典
bad_length_DF = dynamicFramerawtxt.filter(lambda x: len(x['col0']) != total_row_len)
如何从动态框架中删除长度错误的记录并创建 ERROR_Dynamic
框架?
最佳答案
我的一般建议是使用 Spark 数据帧而不是 Glue 动态帧,除非您需要使用内置转换 ( doc ) 或 Glue 作业书签 ( doc )。
下面是适合您的场景的完整 PySpark 脚本。
from pyspark.sql import SparkSession
from pyspark.sql.functions import length
spark = SparkSession.builder.getOrCreate()
data = [
{"col0": "0123456789"},
{"col0": "01234567890"}
]
total_length = 10
df = spark.createDataFrame(data)
df_bad = df.filter(length(df.col0)!=total_length)
df_good = df.filter(length(df.col0)==total_length)
关于dataframe - Glue PySpark - 固定宽度文件处理和验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76162707/