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

转换列时Spark SQL-java.lang.unsupportedOperationException:empty.init

卢英范
2023-03-14

当我试图对列执行强制转换时(从带有标题的逗号分隔的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

共有1个答案

刘辰钊
2023-03-14

可以使用Column的cast方法进行强制转换:

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)

 类似资料:
  • 我们有kakfa hdfs连接器以默认avro格式写入hdfs。示例o/p: obj^A^B^Vavro.schema"["null","string"]^@$ͳø{ 尝试使用以下方式阅读: 我们得到以下错误 JAVAlang.RuntimeException:无法在com上将Avro架构转换为Spark SQL StructType:[“null”,“string”]。databricks。火

  • 我正在尝试使用 jolt 转换 JSON,而无需添加新项目以及从键值中删除空格。此外,我想知道如何映射到当前列表。 输入: 预期产出: 规格已尝试:

  • 我从Yahoo下载了以下数据集!金融(并做了一些基本的操纵)。我的问题是--如何将时间列转换为数据集,转换为数据集的列?

  • 问题内容: 我脑部抽筋:我有一个和一个,并且试图从我的方法之一返回a ,但是出现错误(在下面的行中): 如何解决此问题而无需创建新列表? 澄清: 我不希望将列表创建为(也许是显而易见的解决方案),因为我想私下维护一个,以便将来可以访问SomeClass的方法,而不是公共接口中的方法。在下面的示例案例中没有显示,但是在我的真实程序中我需要它。 问题答案: 您应该将方法重新定义为 同样,其他列表声明。

  • 问题内容: 将a 转换为同时保持Queue顺序的最快方法是什么? 问题答案: 最快的方法是首先使用LinkedList,它可用作列表或队列。 否则您需要复印 注意:处理PriorityQueue时,请使用循环,轮询每个元素并添加到列表中。要列出的PriorityQueue不维护堆顺序。

  • 我正在尝试转换时区,但它增加了一天额外的java函数。 在上面的停用日期是25,当我给输入时,但在格式化后,它的转换为26,为什么有一天os得到了添加,如何避免它。