我有一个类似这样的JSON:
"mapping_field" : {
"values" : {
"key1" : {
"id" : "key1",
"field1" : "value1",
"field2" : "value2",
},
"key2" : {
"id" : "key2",
"field1" : "value3",
"field2" : "value4",
}
},
"keys" : [
"key1",
"key2"
]
}
我正在尝试将此结构映射到 Spark 架构。我已经创建了以下内容;但是它不起作用。我还尝试在值字段映射中移除数组类型
。
StructType("mapping_field",
MapType(
StructField("keys", ArrayType(StringType())),
StructField("values", ArrayType(StructType([
StructField("id",StringType()),
StructField("field1",StringType()),
StructField("field2",StringType())
])))
)
)
另外,请注意,它们“key1”和“key2”是动态字段,将使用唯一标识符生成。也可以有两个以上的键。有没有人能够将数组类型映射到结构类型?
所提供 JSON 的结构类型:
import org.apache.spark.sql.functions._
import org.apache.spark.sql.types.{ArrayType, MapType, StructField, StructType, StringType}
val json = """ {
"mapping_field" : {
"values" : {
"key1" : {
"id" : "key1",
"field1" : "value1",
"field2" : "value2"
},
"key2" : {
"id" : "key2",
"field1" : "value3",
"field2" : "value4"
}
},
"keys" : [
"key1",
"key2"
]
}
}
"""
val struct = StructType(
StructField("mapping_field", StructType(
StructType(
StructField("values", MapType(StringType, StructType(
StructField("id", StringType, false) ::
StructField("field1", StringType, false) ::
StructField("field2", StringType, false) :: Nil)
), false) ::
StructField("keys", ArrayType(StringType), false) :: Nil)
), false) :: Nil)
import spark.implicits._
val df = List(json)
.toDF("json_col")
.select(from_json($"json_col", struct))
我有一个以XML形式出现的数据集,其中一个节点包含JSON。Spark将其作为StringType读入,因此我尝试使用from_json()将json转换为数据帧。 我可以将字符串转换为JSON,但如何编写模式来处理数组? 没有数组的字符串-工作得很好 带数组的字符串 - 无法弄清楚这个
我是新的spark和python,面临着从元数据文件构建模式的困难,该模式可以应用于我的数据文件。场景:数据文件的元数据文件(csv格式),包含列及其类型:例如: 我已成功将其转换为如下数据帧: 但是当我尝试用这个将其转换为StructField格式时 或 然后使用 我得到以下错误: 一旦我准备好了模式,我想使用createDataFrame来应用于我的数据文件。这个过程必须为许多表完成,所以我不
(编辑)更改了字段名称(从foo、bar……改为name和city),因为旧的名称令人困惑 我需要在多个UDF中使用单个函数,并根据输入返回不同的结构。 我的实现的这个简化版本基本上完成了我正在寻找的内容: (编辑)输出: 但是,返回StructType的ArrayType的代码不幸失败: 错误消息是: ValueError:结构类型的意外元组“名称” (编辑)所需输出为: 但是,其他类型(Str
如何将一个新的列事件添加到数据帧中,该事件将是< code>generate_header的结果?如何添加一行作为列值? 可能我们需要将函数转换为UDF 假设我们有这样的东西 我们想得到这个
如何使用Spark Java中的StructType为以下数据定义数据类型? 字段包括:姓名、地址、ID、REPORTCARD 我有以下代码: 现在,我需要使用以下行将javaRDD转换为数据帧(数据集df): 我需要为此创建StructType架构。如何在Spark Java中定义它。 我创建了以下StructType模式: 但我得到了以下例外:
问题内容: MySQL中有没有办法从DATE类型的给定属性和TIME类型的给定属性创建DATETIME? 问题答案: