Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala Spark联接:分析异常引用不明确_Scala_Join_Apache Spark_Dataframe - Fatal编程技术网

Scala Spark联接:分析异常引用不明确

Scala Spark联接:分析异常引用不明确,scala,join,apache-spark,dataframe,Scala,Join,Apache Spark,Dataframe,您好,我正在尝试在spark中连接两个数据帧,但出现以下错误: org.apache.spark.sql.AnalysisException: Reference 'Adapazari' is ambiguous, could be: Adapazari#100064, Adapazari#100065.; 根据多个来源,当您尝试将两个不同的数据帧连接在一起时,可能会发生这种情况,这两个数据帧都具有同名(,)的列。然而,在我的例子中,这不是错误的来源。我之所以能说出来,是因为(1)我的列都有

您好,我正在尝试在spark中连接两个数据帧,但出现以下错误:

org.apache.spark.sql.AnalysisException: Reference 'Adapazari' is ambiguous, 
could be: Adapazari#100064, Adapazari#100065.;
根据多个来源,当您尝试将两个不同的数据帧连接在一起时,可能会发生这种情况,这两个数据帧都具有同名(,)的列。然而,在我的例子中,这不是错误的来源。我之所以能说出来,是因为(1)我的列都有不同的名称,(2)错误中指示的
引用是join列中包含的值

我的代码:

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"
)

结果表明,此错误是由格式错误的JSONL造成的。修复JSONL格式解决了问题。

结果表明,此错误是由于JSONL格式错误造成的。修复JSONL格式解决了这个问题。

fyi,由于spark是惰性的,所以连接之前一切都正常,当您调用“count()”时,您正在执行数据帧。看到一个适用于城市和人民的json示例可能会有所帮助。@Derek_M你的问题让我对数据做了更深入的分析。事实证明,一些JSONL的格式是错误的。如果你愿意,你可以用“你的JSON可能不好”来回答这个问题,我会给你答案。哈,不用担心。很高兴你明白了@Logister请添加您的评论作为回答,了解这可能是数据问题很有帮助在我的案例中,错误是由于两个数据帧中的密钥名称相同而导致的。谢谢。了解原因吗?仅供参考,在连接之前,一切都正常工作,因为spark是懒惰的,当您调用“count()”时,您正在执行数据帧。看到一个适用于城市和人民的json示例可能会有所帮助。@Derek_M你的问题让我对数据做了更深入的分析。事实证明,一些JSONL的格式是错误的。如果你愿意,你可以用“你的JSON可能不好”来回答这个问题,我会给你答案。哈,不用担心。很高兴你明白了@Logister请添加您的评论作为回答,了解这可能是数据问题很有帮助在我的案例中,错误是由于两个数据帧中的密钥名称相同而导致的。谢谢。有没有关于这是为什么的见解?