您好我试图在spark中加入两个数据帧,并且我收到以下错误:
org.apache.spark.sql.AnalysisException: Reference 'Adapazari' is ambiguous,
could be: Adapazari#100064, Adapazari#100065.;
根据多个来源,当您尝试将两个具有相同名称的列(1,2,3)连接在一起时,可能会发生这种情况。但是,在我的情况下,这不是错误的来源。我可以告诉,因为(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"
)
答案 0 :(得分:0)
事实证明,此错误是由于格式错误的JSONL造成的。修复JSONL格式化解决了这个问题。