【发布时间】:2018-12-20 00:50:36
【问题描述】:
我正在使用 SQLContext 读取这样的 CSV 文件:
val csvContents = sqlContext.read.sql("SELECT * FROM
csv.`src/test/resources/afile.csv` WHERE firstcolumn=21")
但它将第一列打印为_c0 并包括其下方的标题。如何设置标头并使用 SQL 查询?我见过这个解决方案:
val df = spark.read
.option("header", "true") //reading the headers
.csv("file.csv")
但这不允许我使用WHERE 子句进行SELECT 查询。有没有办法指定 CSV 标头并进行 SQL SELECT 查询?
【问题讨论】:
-
它无法从我的 where 子句中识别列名,即使该名称存在。我做了:
.select("*").where("col_id=22")但它给出了一个例外:cannot resolve '`col_id`' given input columns: [col_id col_name -
显示
src/test/resources/afile.csv。看起来 CSV 数据源无法识别标题,并且您最终得到了一个长列名称,例如col_id col_name(注意列名之间的空格)。 -
顺便说一句,您使用什么 Spark 版本?
标签: apache-spark apache-spark-sql spark-csv