我正在创建一个pyspark数据帧,方法是从另一个数据帧中选择一个列,并在转换到RDD后用index压缩它,然后返回到DF,如下所示:
df_tmp=o[1].select("value").rdd.zipWithIndex().toDF()
o[1]是数据帧,o[1]中的值:
+-----+
|value|
+-----+
| 0|
| 0|
| 0|
+-----+
o[1].printSchema()
root
|-- value: integer (nullable = true)
在此过程中,“value”将获得额外的方括号,如下所示:
+---+---+
| _1| _2|
+---+---+
|[0]| 0|
|[0]| 1|
+---+---+
df_tmp.printSchema():
root
|-- _1: struct (nullable = true)
| |-- value: long (nullable = true)
|-- _2: long (nullable = true)
当写入hive table:saveAsTable()时,它会导致问题,因为它正在将值写入:“{”value:0}。不过,我只希望值为:0。
如何从这个数据框中去掉多余的大括号,以便在写入配置单元表时可以得到正常的整数值。