有这个架构:
root
|-- Elems: array (nullable = true)
| |-- element: struct (containsNull = true)
| | |-- Elem: integer (nullable = true)
| | |-- Desc: string (nullable = true)
Run Code Online (Sandbox Code Playgroud)
我们如何添加这样的新字段?
root
|-- Elems: array (nullable = true)
| |-- element: struct (containsNull = true)
| | |-- New_field: integer (nullable = true)
| | |-- Elem: integer (nullable = true)
| | |-- Desc: string (nullable = true)
Run Code Online (Sandbox Code Playgroud)
我已经用一个简单的结构做到了这一点(更多细节在这篇文章的底部),但我无法用结构数组来做到这一点。
这是测试它的代码:
val schema = new StructType()
.add("Elems", ArrayType(new …Run Code Online (Sandbox Code Playgroud) 我有错误“Invalid call to qualifier on unresolved object, tree: 'date1尝试将特定 Spark DataFrame 写入 Hive 表时 ”。
我使用的是 Spark 2.4.0,但也在 Spark 2.4.3 中进行了测试,结果相同。
我知道如何避免错误,但这些方法都不是预期的解决方案,因为它以某种方式修改了表:
PARTITIONED BY创建表代码中删除 1 列。text3之后移动列的位置text2。boolean1列创建为一种string类型而不是boolean一种(不需要更改 Hive 表中的类型)。date1列是错误消息给出的列。text3。除了删除date1列,没有其他方法对我有意义。我不明白为什么通过应用任何这些选项来解决问题。
这是一个Scala 示例代码,用于重现错误:
// Create a sample dataframe
import spark.implicits._
val df …Run Code Online (Sandbox Code Playgroud)