Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spark scala重命名贴图列_Scala_Apache Spark - Fatal编程技术网

Spark scala重命名贴图列

Spark scala重命名贴图列,scala,apache-spark,Scala,Apache Spark,我想将map下的键重命名为名称,\u 1为行数,\u 2为状态 root |-- id: string (nullable = true) |-- info: map (nullable = true) | |-- key: string | |-- value: struct (valueContainsNull = true) | | |-- _1: long (nullable = false) | | |-- _2: str

我想将map下的
键重命名为
名称
\u 1
行数
\u 2
状态

  root
  |-- id: string (nullable = true)
  |-- info: map (nullable = true)
  |    |-- key: string
  |    |-- value: struct (valueContainsNull = true)
  |    |    |-- _1: long (nullable = false)
  |    |    |-- _2: string (nullable = true)

请提供帮助

最便宜、最简单的解决方案是使用新模式进行
cast

val df = Seq(("1", Map("foo" -> (1L, "bar")))).toDF("id", "info")

df.withColumn(
  "info",
  $"info".cast("map<string,struct<rownum:long,status:string>>")
).printSchema
如果愿意,您可以使用
数据类型
对象来代替字符串描述,但这要详细得多

无法重命名
(和
),因为没有架构的一部分


udf
可以提供另一个选项,但它的性能低于标准,需要
产品
类型来表示值:

这太棒了!