将 Spark DataSet 行值映射到新的哈希列
Mapping Spark DataSet row values into new hash column
给定以下 DataSet
值 inputData
:
column0 column1 column2 column3
A 88 text 99
Z 12 test 200
T 120 foo 12
在 Spark 中,什么是计算新的 hash
列并将其附加到新的 DataSet
、hashedData
的有效方法,其中定义了 hash
作为 MurmurHash3
在 inputData
.
的每一行值上的应用
具体来说,hashedData
为:
column0 column1 column2 column3 hash
A 88 text 99 MurmurHash3.arrayHash(Array("A", 88, "text", 99))
Z 12 test 200 MurmurHash3.arrayHash(Array("Z", 12, "test", 200))
T 120 foo 12 MurmurHash3.arrayHash(Array("T", 120, "foo", 12))
如果需要更多细节,请告诉我。
感谢任何帮助。谢谢!
一种方法是使用 withColumn
函数:
import org.apache.spark.sql.functions.{col, hash}
dataset.withColumn("hash", hash(dataset.columns.map(col):_*))
事实证明,Spark 已经将此实现为包 org.apache.spark.sql.functions
中的 hash
函数
/**
* Calculates the hash code of given columns, and returns the result as an int column.
*
* @group misc_funcs
* @since 2.0
*/
@scala.annotation.varargs
def hash(cols: Column*): Column = withExpr {
new Murmur3Hash(cols.map(_.expr))
}
在我的例子中,应用为:
import org.apache.spark.sql.functions.{col, hash}
val newDs = typedRows.withColumn("hash", hash(typedRows.columns.map(col): _*))
关于 Spark 我真的有很多东西要学 sql :(.
把它留在这里以防其他人需要它。谢谢!
给定以下 DataSet
值 inputData
:
column0 column1 column2 column3
A 88 text 99
Z 12 test 200
T 120 foo 12
在 Spark 中,什么是计算新的 hash
列并将其附加到新的 DataSet
、hashedData
的有效方法,其中定义了 hash
作为 MurmurHash3
在 inputData
.
具体来说,hashedData
为:
column0 column1 column2 column3 hash
A 88 text 99 MurmurHash3.arrayHash(Array("A", 88, "text", 99))
Z 12 test 200 MurmurHash3.arrayHash(Array("Z", 12, "test", 200))
T 120 foo 12 MurmurHash3.arrayHash(Array("T", 120, "foo", 12))
如果需要更多细节,请告诉我。
感谢任何帮助。谢谢!
一种方法是使用 withColumn
函数:
import org.apache.spark.sql.functions.{col, hash}
dataset.withColumn("hash", hash(dataset.columns.map(col):_*))
事实证明,Spark 已经将此实现为包 org.apache.spark.sql.functions
hash
函数
/**
* Calculates the hash code of given columns, and returns the result as an int column.
*
* @group misc_funcs
* @since 2.0
*/
@scala.annotation.varargs
def hash(cols: Column*): Column = withExpr {
new Murmur3Hash(cols.map(_.expr))
}
在我的例子中,应用为:
import org.apache.spark.sql.functions.{col, hash}
val newDs = typedRows.withColumn("hash", hash(typedRows.columns.map(col): _*))
关于 Spark 我真的有很多东西要学 sql :(.
把它留在这里以防其他人需要它。谢谢!