Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/39.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,我正在应用一种方法,它给出了一个错误,因为转换没有很好地完成 我怎样才能1)以更有效的方式转换所有字段, 2) 仅使用withColumn一次,然后 3) 使用数字(而不是字符串)运行该方法: 谢谢 我不确定您想要实现什么,但下面介绍如何将所有4列转换为整数类型并调用haversine函数: df = q4.select( '*', *[F.col(c).cast('int').alias(c + '_int') for c in ['LOCLONG', 'LOCLA

我正在应用一种方法,它给出了一个错误,因为转换没有很好地完成

我怎样才能1)以更有效的方式转换所有字段, 2) 仅使用withColumn一次,然后 3) 使用数字(而不是字符串)运行该方法:


谢谢

我不确定您想要实现什么,但下面介绍如何将所有4列转换为整数类型并调用
haversine
函数:

df = q4.select(
    '*',
    *[F.col(c).cast('int').alias(c + '_int')
      for c in ['LOCLONG', 'LOCLAT', 'LOCLONG2', 'LOCLAT2']]
)

df = df.withColumn(
    'distance',
    haversine('LOCLONG_int', 'LOCLAT_int', 'LOCLONG2_int', 'LOCLAT2_int')
)

您将覆盖每行中的“距离”列,并将生成的数据帧分配给未使用的变量。你确定这就是你想做的吗?嗨,非常感谢!!代码看起来不错,运行也很好,但由于某些原因,当应用该方法时,它会给我以下错误:必须是实数,而不是str回溯(最近一次调用):文件“”,第11行,在haversine类型中错误:必须是实数,而不是strI。我从这里开始使用该方法:codefrom math import radians,cos,sin,asin,sqrt def haversine(lon1,lat1,lon2,lat2):“计算地球上两点之间的大圆距离(以十进制度数表示)”#将十进制度数转换为弧度lon1,lat1,lon2,lat2=map(弧度,[lon1,lat1,lon2,lat2])#哈弗森公式dlon=lon2-lon1 dlat=lat2-lat1 a=sin(dlat/2)**2+cos(lat1)*cos(lat2)*sin(dlon/2)**2c=2*asin(sqrt(a))r=6371#地球半径(以公里为单位)。使用3956英里返回c*r@Ana你把函数转换成UDF了吗?把@F.UDF放在行
def haversine(…)
上面很好!!非常感谢!!!
df = q4.select(
    '*',
    *[F.col(c).cast('int').alias(c + '_int')
      for c in ['LOCLONG', 'LOCLAT', 'LOCLONG2', 'LOCLAT2']]
)

df = df.withColumn(
    'distance',
    haversine('LOCLONG_int', 'LOCLAT_int', 'LOCLONG2_int', 'LOCLAT2_int')
)