恵砂川*_*恵砂川 4 sql scala apache-spark apache-spark-sql
Spark SQL FROM语句可以指定文件路径和格式。
但是,加载 csv 时标题被忽略。
可以使用标题作为列名吗?
~ > cat test.csv
a,b,c
1,2,3
4,5,6
Run Code Online (Sandbox Code Playgroud)
~ > cat test.csv
a,b,c
1,2,3
4,5,6
Run Code Online (Sandbox Code Playgroud)
我想要。
+---+---+---+
| a| b| c|
+---+---+---+
| 1| 2| 3|
| 4| 5| 6|
+---+---+---+
Run Code Online (Sandbox Code Playgroud)
use*_*362 12
如果你想用普通的 SQL 来完成它,你应该首先创建一个表或视图:
CREATE TEMPORARY VIEW foo
USING csv
OPTIONS (
path 'test.csv',
header true
);
Run Code Online (Sandbox Code Playgroud)
然后从中SELECT得出:
SELECT * FROM foo;
Run Code Online (Sandbox Code Playgroud)
要使用此方法,请SparkSession.sql删除尾随;并单独执行每个语句。
我认为 Spark 2.4.3 中没有提供纯 SQL 解决方案,这是撰写本文时的最新版本。此语法使用规则进行解析,ResolveSQLOnFile该规则始终使用空选项映射DataSource调用构造函数。
我可以验证在构造函数中设置断点DataSource并修改optionstoMap("header" -> "true")可以达到目的,因此显然这就是应该实现的地方。