我正在尝试读取pyspark中的管道分隔文件。我的要求是:
->仅当所有列都按照模式中的给定顺序时才读取文件。如果顺序发生更改,或者缺少特定列,则忽略该文件。我使用选项header='True',enforceSchema=False
完成了此操作
->现在的要求是,在这样做的时候,如果在原始文件的末尾有额外的列,那么忽略这些列,但读取文件。当前代码将引发异常,因为在强制模式时,文件和模式中的列数也应该匹配。
这是我用来读取文件的代码。df = spark.read.schema(schema).options(delimiter='|',header='True',enforceSchema=False).csv(file)
我如何达到这一要求?
范例:
假设模式为A、B、C、D
如果文件列为A| B| C| D,读文件并继续。(此部分正在运行)
如果文件列为A| C| B| D,然后忽略文件/引发错误。(此部分正在工作)
如果文件列为A| B| C| D| E,然后也读取文件并继续。不要在这里提出错误。(这部分是我努力实现的)
1条答案
按热度按时间tgabmvqs1#
试试这个: