apache-spark - 使用 SparkSession 读取、过滤和计算 CSV 文件的行数时如何处理 NullPointerException?
问题描述
我正在尝试使用sparkSession
并计算行数并在控制台上打印值来读取存储在 HDFS 上的 CSV 文件。但是,我NullPointerException
在计算计数时不断得到。下面是代码片段,
val validEmployeeIds = Set("12345", "6789")
val count = sparkSession
.read
.option("escape", "\"")
.option("quote", "\"")
.csv(inputPath)
.filter(row => validEmployeeIds.contains(row.getString(0)))
.distinct()
.count()
println(count)
我得到一个 NPE 完全在.filter
条件。如果我在代码中删除.filter
,它运行良好并打印计数。我该如何处理这个 NPE?
这inputPath
是一个包含多个 CSV 文件的文件夹。每个 CSV 文件有两列,一列代表 Id,另一列代表员工姓名。CSV 提取示例如下:
12345,Employee1
AA888,Employee2
我正在使用 Spark 2.3.1 版。
解决方案
尝试使用isin
功能。
import spark.implicits._
val validEmployeeIds = List("12345", "6789")
val df = // Read CSV
df.filter('_c0.isin(validEmployeeIds:_*)).distinct().count()
推荐阅读
- laravel - Laravel 在一个应用程序中使用多个子域
- python - 在word文档中获取表格形状的数据框
- reactjs - react-lottie,无法为动画数据传递道具
- javascript - 通过 DOM 操作读取颜色属性,我想读取 body 的 backgroundColor 的值。但结果是一个空字符串
- python - RuntimeError:cuda 运行时错误(3):/opt/conda/conda-bld/pytorch-nightly_1553749772122/work/aten/src/THC/THCGeneral.cpp:51 处的初始化错误
- reactjs - React.js Virgin:为什么我的硬编码数据与用户输入的数据不同?
- python-3.x - TypeError:Asia/Kolkata 类型的对象不是 JSON 可序列化的
- c# - C# System.Net.Http.StringContent() 在运行时给出异常
- python - 有没有办法更改嵌套函数的参数名称?
- react-native - 如何使用 react-navigation v5 获取 id 的参数?