Apache spark 火花爆炸丢失记录
DF的现有模式:Apache spark 火花爆炸丢失记录,apache-spark,apache-spark-sql,Apache Spark,Apache Spark Sql,DF的现有模式: |-- col1: string (nullable = true) |-- col2: array (nullable = true) | |-- element: struct (containsNull = true) | | |-- col2_1: string (nullable = true) | | |-- col2_2: string (nullable = true) 现有架构的示例数据: col1 col2
|-- col1: string (nullable = true)
|-- col2: array (nullable = true)
| |-- element: struct (containsNull = true)
| | |-- col2_1: string (nullable = true)
| | |-- col2_2: string (nullable = true)
现有架构的示例数据:
col1 col2
A [[0,2],[1,3]]
B [[1,5]]
C [[5,9],[4,6],[2,6]]
所需架构:
|-- col1: timestamp (nullable = true)
|-- col2_1: string (nullable = true)
|-- col2_2: string (nullable = true)
col1 col2_1 col2_2
A 0 2
A 1 3
B 1 5
C 5 9
C 4 6
C 2 6
所需架构的示例数据:
|-- col1: timestamp (nullable = true)
|-- col2_1: string (nullable = true)
|-- col2_2: string (nullable = true)
col1 col2_1 col2_2
A 0 2
A 1 3
B 1 5
C 5 9
C 4 6
C 2 6
代码:
我没有得到任何代码错误。但是它缺少原始DF的值,其中原始DF中的distinct(col1)约为20000,在展平后变为约6000
关于错误的任何建议。
explode()
将不会在要分解的数组为null的位置发出任何行。因此,您应该改用explode\u outer()
。explode()
将不会在要分解的数组为null的位置发出任何行。因此,您应该改用explode_outer()
。col2
中的数组可以为空吗?@ollik1不,它不能为空。但它可以有如上面示例中所示的可变大小。@ollik1您是对的。col2的值在某些情况下为空,并且这些记录丢失。col2
中的数组是否可以为空?@ollik1否它不能为空。但它可以有如上面示例中所示的可变大小。@ollik1您是对的。col2的值在某些情况下为空,并且这些记录丢失。