Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.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
Apache spark 如何从函数参数动态创建列_Apache Spark_Pyspark_Apache Spark Sql - Fatal编程技术网

Apache spark 如何从函数参数动态创建列

Apache spark 如何从函数参数动态创建列,apache-spark,pyspark,apache-spark-sql,Apache Spark,Pyspark,Apache Spark Sql,我正在编写一个函数,希望传递它的参数以在数据框中创建列 比如, def任意值(数据输入,节点): 节长=长度(节) 纽结名称=[“纽结”+str(num1)表示num1的范围(1,纽结长度+1)] datain=datain.withColumn(“var”+节点名称[1],随便什么…) 通过这样做,我看不到创建了最后一列“var_knot_1”。你知道如何正确地完成这项工作吗?非常感谢。您需要返回数据帧: # Initialise dataframe df = ... def whatev

我正在编写一个函数,希望传递它的参数以在数据框中创建列

比如,

def任意值(数据输入,节点):
节长=长度(节)
纽结名称=[“纽结”+str(num1)表示num1的范围(1,纽结长度+1)]
datain=datain.withColumn(“var”+节点名称[1],随便什么…)

通过这样做,我看不到创建了最后一列“var_knot_1”。你知道如何正确地完成这项工作吗?非常感谢。

您需要返回数据帧:

# Initialise dataframe
df = ...

def whatever(datain, knots):
  knots_length = len(knots)
  knot_names = ["knot_" + str(num1) for num1 in range(1, knots_length+1)]

  datain = datain.withColumn("var"+knot_names[1], whatever.....)
  return datain

df = whatever(df, knots)
Spark数据帧是不可变的。换句话说,函数内部的
datain
与函数外部的
datain
不同。因此,您需要
在函数中返回它,并将它分配给原始的
数据。