scala - Spark读取空目录
问题描述
试图读取一个空的 parquet 目录,得到这个错误
无法为镶木地板指定架构。必须手动指定
我的代码
val myObject = spark.read.parquet(path).as[MyClass].filter(p => ......)
尝试使用 scala 'Try' 处理并定期检查空目录
myObject.rdd.isEmpty
有任何想法吗
解决方案
你可以试试这样
var myObject: DataFrame = null
try {
myObject = spark.read.parquet(path).as[MyClass].filter(p => ......)
catch {
case ae: AnalysisException =>
//Do your logic here
}
在这种情况下,“myObject.rdd.isEmpty”不起作用,因为它需要加载目录并推断架构,然后检查是否为空。
要使其工作,您可以执行以下操作:
val customSchema = StructType(Array(
StructField("id", IntegerType, true),
StructField("name", StringType, true),
StructField("email", StringType, true))
)
val myObject = spark.read.schema(customSchema).parquet(path).as[MyClass].filter(p => ......)
if(myObject.rdd.isEmpty) {
//Do something
}
else {
//Do something else
}
推荐阅读
- nginx - 如何为已安装的 OpenResty 添加对“secure_link”的支持?
- windows - 使用 Terraform 和启动脚本创建专用网络 - Google Cloud Platform
- laravel - 如何在 laravel 中为 SPA 管理面板注册路由
- wpf - 如何禁用 WebBrowser 控制的密码管理器
- python - 如何将毫秒转换为时间
- javascript - 如何使用 javascript 或 typescript 在新窗口中打开页面?
- facebook - Facebook 评级 API 未返回评论者姓名
- python - 单击图例时如何更改matplot中一组点的颜色?
- ruby-on-rails - Rails 和 postgresql - 不提供密码
- html - 我可以自定义 CSS 网格吗?