数据集写入Cassandra失败,并带有TypeConversionException

时间:2018-10-30 22:08:11

标签: java apache-spark cassandra

我有以下代码使用Spark将json存储到cassandra

ss.read().json("test_data.json").write()
                    .format("org.apache.spark.sql.cassandra")
                    .mode(SaveMode.Append)
                    .option("table", table)
                    .option("keyspace", KEY_SPACE)
                    .option("confirm.truncate", true)
                    .save();

该表具有一个主键,并且当记录的主键值为空时,save()会引发异常TypeConversionException Cannot convert object [null,null,null,null,null,n..., "test text test text" type class org.apache.spark.sql.catalyst.expressions.GenericRowWithSchema to List[AnyRef]

对我来说,很明显,该记录应该过滤,或者在发生异常时记录下来。对我来说,问题是我没有找到捕获此异常的方法,然后我可以记录该脏记录。

sc.read().json("test_data.json").na().drop()没有帮助,因为记录中包含一些数据。

我发现cassandra连接器中有一个saveToCassandra()方法,该方法可能具有实现异常处理程序的方法,但是我在SparkSession中找不到它。

SparkSession ss = SparkSession
        .builder()
        .config("spark.cassandra.connection.host", cassandraHost)
        .config("spark.master", "local")
        .getOrCreate();

我使用最新的Spark版本2.3.2。

0 个答案:

没有答案