dataframe - Glue PySpark - 固定宽度文件处理和验证

标签 dataframe pyspark aws-glue fixed-width

我必须验证从 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/

相关文章:

python - 如果 Python Pandas 中的列包含任何特殊字符,则重复行

python - Pandas 删除前 n 行,直到满足列上的条件

r - 如果 R 数据框中的列包含特定文本,则删除重复的观察值

csv - PySpark 不规则执行上的 PCA

amazon-web-services - AWS 在线开发端点抛出 importerror no module named aws glue.transforms

apache-spark - Glue 上的 Spark 无法连接到 AWS/ElasticSearch

r - 在数据框中查找条形码并计算这种情况发生的次数,for 循环非常慢?

apache-spark - Spark : How to do a dropDuplicates on a dataframe while keeping the highest timestamped row

python - 如何从 PySpark DataFrame 中获取随机行?

amazon-web-services - 获取文件从 SFTP 到 S3 AWS