元组列表 PySpark Schema
List of tuples PySpark Schema
以下内容的正确 PySpark 架构是什么?第一个 return 是一个列表,我已经正确编码了,但是第二个 return 是一个元组列表,我不确定如何在一个模式中编写其对应的类型。
df = spark.createDataFrame([("Alive", 4)], ["Name", "Number"])
def example(n):
return Row('Out1', 'Out2')([n + 2, n+4], [(n, n+2), (n, n+4)])
schema = StructType([
StructField("Out1", ArrayType(IntegerType()), False),
StructField("Out2", ArrayType(IntegerType(), False), True)])
example_udf = F.udf(example, schema)
newDF = df.withColumn("Output", F.explode(F.array(example_udf(df["Number"]))))
newDF = newDF.select("Name", "Number", "Output.*")
提前致谢!
我们可以使用第二个 return 输入 array(array(integer))
,
df = spark.createDataFrame([("Alive", 4)], ["Name", "Number"])
def example(n):
return ([n + 2, n+4], [(n, n+2), (n, n+4)])
schema =StructType([StructField('out1',ArrayType(IntegerType())),StructField('out2',ArrayType(ArrayType(IntegerType())))])
example_udf = F.udf(example, schema)
df.select(example_udf(df.number).alias('s_col')).select('s_col.out1','s_col.out2').show()
+------+--------------+
| out1 | out2 |
+---+-----------------+
|[6,8] |[[4,6],[4,8]] |
+------+--------------+
谢谢@Suresh!我的问题的另一个答案是:
schema = StructType([
StructField("Out1", ArrayType(IntegerType()), False),
StructField("Out2", ArrayType(StructType([StructField("_1", IntegerType(), False), StructField("_2", IntegerType(), False)])))])
以下内容的正确 PySpark 架构是什么?第一个 return 是一个列表,我已经正确编码了,但是第二个 return 是一个元组列表,我不确定如何在一个模式中编写其对应的类型。
df = spark.createDataFrame([("Alive", 4)], ["Name", "Number"])
def example(n):
return Row('Out1', 'Out2')([n + 2, n+4], [(n, n+2), (n, n+4)])
schema = StructType([
StructField("Out1", ArrayType(IntegerType()), False),
StructField("Out2", ArrayType(IntegerType(), False), True)])
example_udf = F.udf(example, schema)
newDF = df.withColumn("Output", F.explode(F.array(example_udf(df["Number"]))))
newDF = newDF.select("Name", "Number", "Output.*")
提前致谢!
我们可以使用第二个 return 输入 array(array(integer))
,
df = spark.createDataFrame([("Alive", 4)], ["Name", "Number"])
def example(n):
return ([n + 2, n+4], [(n, n+2), (n, n+4)])
schema =StructType([StructField('out1',ArrayType(IntegerType())),StructField('out2',ArrayType(ArrayType(IntegerType())))])
example_udf = F.udf(example, schema)
df.select(example_udf(df.number).alias('s_col')).select('s_col.out1','s_col.out2').show()
+------+--------------+
| out1 | out2 |
+---+-----------------+
|[6,8] |[[4,6],[4,8]] |
+------+--------------+
谢谢@Suresh!我的问题的另一个答案是:
schema = StructType([
StructField("Out1", ArrayType(IntegerType()), False),
StructField("Out2", ArrayType(StructType([StructField("_1", IntegerType(), False), StructField("_2", IntegerType(), False)])))])