当前位置: 首页 > 知识库问答 >
问题:

火花读取空目录

常甫
2023-03-14

试图读取一个空的镶木地板目录,得到这个错误

无法指定拼花地板的架构。必须手动指定

我的代码

val myObject = spark.read.parquet(path).as[MyClass].filter(p => ......)

尝试处理scala尝试和定期检查空目录

myObject.rdd.isEmpty

任何想法

共有1个答案

仉宪
2023-03-14

你可以这样试试

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
}
 类似资料:
  • 我有一些Spark经验,但刚开始使用Cassandra。我正在尝试进行非常简单的阅读,但性能非常差——不知道为什么。这是我正在使用的代码: 所有3个参数都是表上键的一部分: 主键(group\u id,epoch,group\u name,auto\u generated\u uuid\u field),聚类顺序为(epoch ASC,group\u name ASC,auto\u generat

  • 正在尝试读取avro文件。 无法将运行到Avro架构的数据转换为Spark SQL StructType:[“null”,“string”] 尝试手动创建架构,但现在遇到以下情况: 通用域名格式。databricks。火花阿夫罗。SchemaConverters$CompatibleSchemaException:无法将Avro架构转换为catalyst类型,因为路径处的架构不兼容(avroTyp

  • 我在一个Spark项目上工作,这里我有一个文件是在parquet格式,当我试图用java加载这个文件时,它给了我下面的错误。但是,当我用相同的路径在hive中加载相同的文件并编写查询select*from table_name时,它工作得很好,数据也很正常。关于这个问题,请帮助我。 java.io.ioException:无法读取页脚:java.lang.runtimeException:损坏的文

  • 我正在运行以下scala代码: 我知道firstStruct是structType,StructFields的一个名称是“name”,但在尝试强制转换时似乎失败了。我被告知spark/hive结构与scala不同,但为了使用structType,我需要 所以我想他们应该是同一种类型的。 我看了看这里:https://github.com/apache/spark/blob/master/sql/c

  • 我想用Apache Spark读入具有以下结构的文件。 csv太大了,不能使用熊猫,因为读取这个文件需要很长时间。有什么方法类似于 多谢!

  • 我使用以下方法将csv文件读入Spark: df=spark.read.format(file_type).options(header='true',quote='\"',ignoreleadingwhitespace='true',inferschema='true').load(file_location) 这是正常行为还是读错了? 更新:我将标记问题作为回答,因为下面的提示是有用的。然而,