在Spark DataFrame中添加一列并为其计算值

jspooner

我有一个CSV文档,正在加载到包含经度和纬度列的SQLContext中。

val sqlContext = new org.apache.spark.sql.SQLContext(sc);
val df = sqlContext.read.format("com.databricks.spark.csv").option("header", "false").option("delimiter","\t").schema(customSchema).load(inputFile);

CSV范例

metro_code, resolved_lat, resolved_lon
602, 40.7201, -73.2001

我正在尝试找出添加新列并计算每一行的GeoHex的最佳方法。使用geohex包可以很容易地散列经纬度。我想我需要运行parallelize方法,或者我已经看到一些将函数传递给withColumn的示例。

零323

用UDF包装必需的功能应该可以解决问题:

import org.apache.spark.sql.functions.udf
import org.geohex.geohex4j.GeoHex

val df = sc.parallelize(Seq(
  (Some(602), 40.7201, -73.2001), (None, 5.7805, 139.5703)
)).toDF("metro_code", "resolved_lat", "resolved_lon")

def geoEncode(level: Int) = udf(
  (lat: Double, long: Double) => GeoHex.encode(lat, long, level))

df.withColumn("code", geoEncode(9)($"resolved_lat", $"resolved_lon")).show
// +----------+------------+------------+-----------+
// |metro_code|resolved_lat|resolved_lon|       code|
// +----------+------------+------------+-----------+
// |       602|     40.7201|    -73.2001|PF384076026|
// |      null|      5.7805|    139.5703|PR081331784|
// +----------+------------+------------+-----------+

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在 Spark DataFrame 中添加一个新列,其中包含一列的所有值的总和 - Scala/Spark

根据Spark中上一行的同一列中的值计算值

通过计算包含整列的行的值,在spark数据框中创建一列

如何在 Spark Dataframe 上的字符串中添加一列字符的索引?

从现有列在 Spark 中添加一列

在 spark DataFrame 中創建兩列,一列用於累積值,另一列用於最大連續值

Spark DataFrame:计算每列的不同值

使用Spark将一列的连续相同值分组,并为每组取另一列的最大值或最小值

如何计算Spark Dataframe中的列数?

如何根据另一列的值从 Spark DataFrame 中选择特定列?

在Spark数据框中,如果另一列中的值在广播变量数组中,则将值添加到新列

将行值转换为带有Spark Scala中另一列的值的列

Spark SQL:当另一列是 groupBy().agg() 中的最大值时获取列的值

如何在 Pandas Python 中计算第二大值并为其添加另一列

在Spark Dataframe中将一列转换为多列

Spark / Scala如何从前一列的值中减去当前列的值?

Spark:将缺失的值替换为另一列中的值

如何在 Spark Scala 中迭代 Dataframe 中的每一列

在Spark中获取DataFrame列的值

Spark SQL Map仅DataFrame的一列

使用列值在 spark 数据框中投射另一列

如何使用Spark Data Frame中前一行的两列来计算Row中的一列?

基于前一列的Spark Df Check Column值

Spark PySpark 输出 JSON,以一列值作为键

Spark - 如何为 countVectorizer 模型创建在其一列中包含值数组的 Spark 数据帧

使用Spark SQL在多列中拆分一列

spark scala 数据框将一列中的所有值加 1

检查spark数据框中的每一列是否具有特定值

将Java Spark数据框中的不同值从几列连接到一列