apache-spark - 以许可模式读取 json 文件 - PySpark 2.3
问题描述
我有一个数据作业来读取一堆 json 文件,其中某些文件中的少数 json 行可能已损坏(无效的 json)。下面是代码:
df = spark.read \
.option("mode", "PERMISSIVE")\
.option("columnNameOfCorruptRecord", "_corrupt_record")\
.json("hdfs://someLocation/")
对我来说发生的事情是,如果我尝试使用上述代码读取一个完全完美的文件(没有损坏的记录),则根本不会添加此列。
我的要求是添加这个“_corrupt_record”列,不管json文件是否有损坏的记录。如果文件没有任何损坏的记录,则该字段的所有值都应为空。
解决方案
您可以检查该_corrupt_record
列是否存在于 中df
,如果不存在则手动添加。
import pyspark.sql.functions as F
if '_corrupt_record' not in df.columns:
df = df.withColumn('_corrupt_record', F.lit(None))
推荐阅读
- reactjs - 弹出窗口的 React ref 反模式
- api - 如何通过rest api(或ambari rest api)捕获活动的namenode IP
- android - 如何从文件中动态设置 imageView?
- r - 从 R 中的 ARMA 模型中获取 AR(p) 值
- css - 带有网格布局的卡片部分
- excel - 根据 sheet1 上复选框的值取消隐藏 sheet2 上的行
- java - 启动进程'命令'C:\Program Files\AdoptOpenJDK\jdk-11.0.6.10-hotspot\bin\java.exe''
- reactjs - React 新手:任何帮助将不胜感激
- websocket - 连接来自 Angular 项目的 Laravel 回声
- excel - 我可以从未打开的工作簿中提取特定数据,例如使用 VBA 的 v-lookup 吗?