Spark Join:分析异常引用含糊不清

时间:2017-02-13 21:56:54

标签: scala join apache-spark dataframe

您好我试图在spark中加入两个数据帧,并且我收到以下错误:

org.apache.spark.sql.AnalysisException: Reference 'Adapazari' is ambiguous, 
could be: Adapazari#100064, Adapazari#100065.;

根据多个来源,当您尝试将两个具有相同名称的列(123)连接在一起时,可能会发生这种情况。但是,在我的情况下,这不是错误的来源。我可以告诉,因为(1)我的列都有不同的名称,(2)错误中指示的reference是连接列中包含的值。

我的代码:

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

val spark = SparkSession
  .builder().master("local")
  .appName("Spark SQL basic example")
  .config("master", "spark://myhost:7077")
  .getOrCreate()

val sqlContext = spark.sqlContext

import sqlContext.implicits._

val people = spark.read.json("/path/to/people.jsonl")
  .select($"city", $"gender")
  .groupBy($"city")
  .pivot("gender")
  .agg(count("*").alias("total"))
  .drop("0")
  .withColumnRenamed("1", "female")
  .withColumnRenamed("2", "male")
  .na.fill(0)

val cities = spark.read.json("/path/to/cities.jsonl")
  .select($"name", $"longitude", $"latitude")

cities.join(people, $"name" === $"city", "inner")
  .count()

一切顺利,直到我点击连接线,然后我得到上述错误。

build.sbt中的相关行是:

libraryDependencies ++= Seq(
  "org.apache.spark" % "spark-core_2.10" % "2.1.0",
  "org.apache.spark" % "spark-sql_2.10" % "2.1.0",
  "com.databricks" % "spark-csv_2.10" % "1.5.0",
  "org.apache.spark" % "spark-mllib_2.10" % "2.1.0"
)

1 个答案:

答案 0 :(得分:0)

事实证明,此错误是由于格式错误的JSONL造成的。修复JSONL格式化解决了这个问题。