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 减去两个数组以在Pyspark中获得一个新数组_Apache Spark_Pyspark_Apache Spark Sql - Fatal编程技术网

Apache spark 减去两个数组以在Pyspark中获得一个新数组

Apache spark 减去两个数组以在Pyspark中获得一个新数组,apache-spark,pyspark,apache-spark-sql,Apache Spark,Pyspark,Apache Spark Sql,我是新手。 我可以用python Pandas&Numpy对数组进行求和、减法或乘法。但是我在Spark python中做类似的事情时遇到了困难。我在数据库里 例如,这种方法会产生一个巨大的错误消息,我不想复制粘贴到这里: 微分器=udflambda x,y:x-y,ArrayTypeFloatType df.带列'difference',差分词'Array1','Array2' 架构如下所示: root |-- col1: integer (nullable = true) |-- tim

我是新手。 我可以用python Pandas&Numpy对数组进行求和、减法或乘法。但是我在Spark python中做类似的事情时遇到了困难。我在数据库里

例如,这种方法会产生一个巨大的错误消息,我不想复制粘贴到这里:

微分器=udflambda x,y:x-y,ArrayTypeFloatType

df.带列'difference',差分词'Array1','Array2'

架构如下所示:

root
 |-- col1: integer (nullable = true)
 |-- time: timestamp (nullable = true)
 |-- num: integer (nullable = true)
 |-- part: integer (nullable = true)
 |-- result: integer (nullable = true)
 |-- Array1: array (nullable = true)
 |    |-- element: float (containsNull = true)
 |-- Array2: array (nullable = false)
 |    |-- element: float (containsNull = true)
我只想创建一个新列减去这两个数组列。实际上,我会得到他们之间的RMSE。但我想,一旦我学会了如何获得这种差异,我就能处理好它

数组看起来像这样我只是输入了一些整数:

第1排[5,4,2,4,3] 阵列2_第1行[4,3,1,2,1]

因此,第1行的结果数组应为: DiffCol_row1[1,1,1,2,2]

谢谢你的建议或指导。谢谢。

您可以压缩和转换数组

从pyspark.sql.functions导入expr df=spark.createDataFrame [5,4,2,4,3]、[4,3,1,2,1]、数组1,数组2 df.withColumn 阵列3, exprtTransformarray_ziparray1,array2,x->x.array1-x.array2 显示 +--------+--------+--------+ |阵列1 |阵列2 |阵列3| +--------+--------+--------+ |[5, 4, 2, 4, 3]|[4, 3, 1, 2, 1]|[1, 1, 1, 2, 2]| +--------+--------+--------+ 一个有效的udf需要一个等价的逻辑,即

从pyspark.sql.functions导入udf @乌德法拉 def差速器XS、ys: 如果xs和ys: 返回[floatx-y表示x,y表示zipxs,ys] df.withColumnarray3,differenticerarray1,array2.show +--------+--------+----------+ |阵列1 |阵列2 |阵列3| +--------+--------+----------+ |[5, 4, 2, 4, 3]|[4, 3, 1, 2, 1]|[1.0, 1.0, 1.0, 2...| +--------+--------+----------+ 您可以压缩和转换数组

从pyspark.sql.functions导入expr df=spark.createDataFrame [5,4,2,4,3]、[4,3,1,2,1]、数组1,数组2 df.withColumn 阵列3, exprtTransformarray_ziparray1,array2,x->x.array1-x.array2 显示 +--------+--------+--------+ |阵列1 |阵列2 |阵列3| +--------+--------+--------+ |[5, 4, 2, 4, 3]|[4, 3, 1, 2, 1]|[1, 1, 1, 2, 2]| +--------+--------+--------+ 一个有效的udf需要一个等价的逻辑,即

从pyspark.sql.functions导入udf @乌德法拉 def差速器XS、ys: 如果xs和ys: 返回[floatx-y表示x,y表示zipxs,ys] df.withColumnarray3,differenticerarray1,array2.show +--------+--------+----------+ |阵列1 |阵列2 |阵列3| +--------+--------+----------+ |[5, 4, 2, 4, 3]|[4, 3, 1, 2, 1]|[1.0, 1.0, 1.0, 2...| +--------+--------+----------+ 您可以将zip_与Spark 2.4一起使用:

从pyspark.sql.functions导入expr df=spark.createDataFrame [5,4,2,4,3]、[4,3,1,2,1]、数组1,数组2 df.withColumn 阵列3, 使用阵列1、阵列2、x、y->x-y表示ZIP_ 显示 +--------+--------+--------+ |阵列1 |阵列2 |阵列3| +--------+--------+--------+ |[5, 4, 2, 4, 3]|[4, 3, 1, 2, 1]|[1, 1, 1, 2, 2]| +--------+--------+--------+ 您可以将zip_与Spark 2.4一起使用:

从pyspark.sql.functions导入expr df=spark.createDataFrame [5,4,2,4,3]、[4,3,1,2,1]、数组1,数组2 df.withColumn 阵列3, 使用阵列1、阵列2、x、y->x-y表示ZIP_ 显示 +--------+--------+--------+ |阵列1 |阵列2 |阵列3| +--------+--------+--------+ |[5, 4, 2, 4, 3]|[4, 3, 1, 2, 1]|[1, 1, 1, 2, 2]| +--------+--------+--------+
谢谢@user11406020的回复。arrays\u-zip很好!我开始阅读pyspark.sql.functions,它非常有用。非常感谢。你为什么否决了这个问题?这是一个糟糕的解释还是一个糟糕的问题?@user11406020@udfarray的目的是什么?谢谢@user11406020的回复。arrays\u-zip很好!我开始了reading pyspark.sql.functions,它非常有用。非常感谢。你为什么否决这个问题?这是一个糟糕的解释还是一个糟糕的问题?@user11406020@udfarray的目的是什么?