小编rvi*_*lla的帖子

Spark - 如何将元素添加到结构数组中

有这个架构:

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)

arrays struct dataframe apache-spark apache-spark-sql

7
推荐指数
1
解决办法
8348
查看次数

尝试将 Spark DF 写入 Hive 表时出现错误“对未解析对象的限定符调用无效”

我有错误“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
  • 在 df 中,将boolean1列创建为一种string类型而不是boolean一种(不需要更改 Hive 表中的类型)。
  • 删除 df 和 table 中的 1 列(df 和 table 必须具有相同的列数):
    • 显然,删除date1列是错误消息给出的列。
    • 删除列text3

除了删除date1列,没有其他方法对我有意义。我不明白为什么通过应用任何这些选项来解决问题。

这是一个Scala 示例代码,用于重现错误:

// Create a sample dataframe
import spark.implicits._
val df …
Run Code Online (Sandbox Code Playgroud)

hive scala apache-spark apache-spark-sql orc

3
推荐指数
1
解决办法
5354
查看次数

标签 统计

apache-spark ×2

apache-spark-sql ×2

arrays ×1

dataframe ×1

hive ×1

orc ×1

scala ×1

struct ×1