gpt4 book ai didi

scala - 如何加入二进制字段?

转载 作者:行者123 更新时间:2023-12-01 07:20:37 24 4
gpt4 key购买 nike

在 Scala/Spark 中,我正在尝试执行以下操作:

val portCalls_Ports = 
portCalls.join(ports, portCalls("port_id") === ports("id"), "inner")

但是我收到以下错误:
Exception in thread "main" org.apache.spark.sql.AnalysisException: 
binary type expression port_id cannot be used in join conditions;

确实,这是一个二进制类型:
root
|-- id: binary (nullable = false)
|-- port_id: binary (nullable = false)
.
.
.

+--------------------+--------------------+
| id| port_id|
+--------------------+--------------------+
|[FB 89 A0 FF AA 0...|[B2 B2 84 B9 52 2...|

原样 ports("id") .

我正在使用以下库:
scalaVersion := "2.11.11"
libraryDependencies ++= Seq(
// Spark dependencies
"org.apache.spark" %% "spark-hive" % "1.6.2",
"org.apache.spark" %% "spark-mllib" % "1.6.2",
// Third-party libraries
"postgresql" % "postgresql" % "9.1-901-1.jdbc4",
"net.sf.jopt-simple" % "jopt-simple" % "5.0.3"
)

请注意,我使用 JDBC 来读取数据库表。

解决此问题的最佳方法是什么?

最佳答案

上一页 Spark 2.1.0 ,我所知道的最好的解决方法是使用 base64函数将二进制列转换为字符串,并比较这些:

import org.apache.spark.sql.functions._

val portCalls_Ports =
portCalls.join(ports, base64(portCalls("port_id")) === base64(ports("id")), "inner")

关于scala - 如何加入二进制字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44460275/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com