scala - Scala:Spark SQL即使存在也无法解析列名
问题描述
我正在尝试对 Spark SQL 中的两个数据帧运行 SQL 查询。以下是我的代码:
val targetData = sqlContext.read.format("csv")
.option("header","true")
.option("inferSchema","true")
.load("/Users/user/Desktop/input.csv")
val inputData = sqlContext.read.format("csv")
.option("header","true")
.option("inferSchema","true")
.load("/Users/user/Desktop/input2.csv")
targetData.printSchema()
inputData.printSchema()
targetData.registerTempTable("target")
inputData.registerTempTable("input")
val temp = sqlContext.sql("SELECT target.empid, target.name, target.code FROM target INNER JOIN input ON target.empid = input.empid WHERE input.flag = 'Y'")
temp.show()
上面的代码产生以下输出:
root
|-- empid: integer (nullable = true)
|-- name: string (nullable = true)
|-- code: string (nullable = true)
root
|-- empid: integer (nullable = true)
|-- name: string (nullable = true)
|-- code: string (nullable = true)
|-- flag: string (nullable = true)
Exception in thread "main" org.apache.spark.sql.AnalysisException: cannot resolve 'target.empid' given input columns empid, name, code;
如您所见,我可以清楚地看到目标数据框架构中的 empid,但是当我对其执行任何 sql 或选择列时,我仍然保持相同的错误。不知道为什么会这样。
我正在使用的版本:scala - 2.10.4 spark - 1.6 hive - 0.13 spark-csv_2.10 - 1.4.0
解决方案
推荐阅读
- c# - 如何在执行共同任务时等待多个线程?
- python-3.x - SQLAlchemy 表达式语言和 SQLite 的删除级联
- javascript - 这里声明了什么?申报后的样子如何?
- hashicorp-vault - Hashicorp 保险库 - “个人保险库”政策问题
- python - Python - 字符串中的每个其他字母在循环中大写,其中数据是从用户输入的复制列表中传递下来的
- process - ubuntu中多个进程之间通信的最佳方式是什么
- python - 如何删除我的数据集中的垃圾值或缺失值?
- node.js - Node.js 和 Express - BadRequestError:请求中止
- wordpress - 使用 Docker 文件错误将文件从主机复制到 Docker 容器
- python - 二元交叉熵与 2 类的分类交叉熵