Scala/Spark, je suis en train de faire ce qui suit:Comment se connecter sur un champ binaire?
val portCalls_Ports =
portCalls.join(ports, portCalls("port_id") === ports("id"), "inner")
Cependant, je reçois l'erreur suivante:
Exception in thread "main" org.apache.spark.sql.AnalysisException:
binary type expression port_id cannot be used in join conditions;
Il est vrai que c'est un type binaire:
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...|
tel que ports("id")
.
J'utilise les bibliothèques suivantes:
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"
)
Notez que j'utilise JDBC pour lire les tables de base de données.
Quelle est la meilleure façon de résoudre ce problème?
expressions de type binaire peuvent être utilisés dans des conditions de jointure dans Spark 2.1.0, mais pas dans les versions antérieures. – suj1th
J'ai supprimé la balise jdbc, car ce problème semble être purement interne et n'est pas lié à l'utilisation de jdbc. –