gpt4 book ai didi

java - Spark SQL - 转换列时出现 java.lang.UnsupportedOperationException : empty. init

转载 作者:行者123 更新时间:2023-11-30 01:43:33 43 4
gpt4 key购买 nike

尝试对列执行转换时出现以下错误(从带标题的逗号分隔 csv 文件读取)。

这是我正在使用的代码:

var df = spark.read.option("header","true").option("delimiter",",").csv("/user/sample/data")
df.withColumn("columnCast", expr("CAST(SaleAmount) AS LONG")).count

这会导致每次都会抛出以下异常。我在转换时尝试过不同的列,有些会抛出,而另一些则不会。我还尝试了以下方法,它也引发了相同的异常。

df.withColumn("columnCast", expr("CAST(NULL) AS LONG")).count

java.lang.UnsupportedOperationException: empty.init at scala.collection.TraversableLike$class.init(TraversableLike.scala:451) at scala.collection.mutable.ArrayOps$ofInt.scala$collection$IndexedSeqOptimized$$super$init(ArrayOps.scala:234) at scala.collection.IndexedSeqOptimized$class.init(IndexedSeqOptimized.scala:135) at scala.collection.mutable.ArrayOps$ofInt.init(ArrayOps.scala:234) at org.apache.spark.sql.catalyst.analysis.FunctionRegistry$$anonfun$7$$anonfun$11.apply(FunctionRegistry.scala:565) at org.apache.spark.sql.catalyst.analysis.FunctionRegistry$$anonfun$7$$anonfun$11.apply(FunctionRegistry.scala:558) at scala.Option.getOrElse(Option.scala:121)

我尝试在 Spark-Shell 和 Zeppelin 中运行它。 Spark版本是2.4.0.cloudera2,由Cloudera管理。

是什么导致了这种行为?这是故意的吗?我该如何处理这个问题?

最佳答案

您可以使用列的强制转换方法来进行强制转换:

import spark.implicits._

val df = spark.sparkContext.parallelize(1 to 10).toDF("col1")
val casted = df.withColumn("test", lit(null).cast("string"))
.withColumn("testCast", $"test".cast("long"))
casted.show()
casted.printSchema()

结果:

+----+----+--------+
|col1|test|testCast|
+----+----+--------+
| 1|null| null|
| 2|null| null|
| 3|null| null|
| 4|null| null|
| 5|null| null|
| 6|null| null|
| 7|null| null|
| 8|null| null|
| 9|null| null|
| 10|null| null|
+----+----+--------+

root
|-- col1: integer (nullable = false)
|-- test: string (nullable = true)
|-- testCast: long (nullable = true)

关于java - Spark SQL - 转换列时出现 java.lang.UnsupportedOperationException : empty. init,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59053182/

43 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com