【发布时间】:2022-05-12 20:51:02
【问题描述】:
我希望从 spark-sql CLI 获得输出。但是数据是用“\t”分隔的CSV。有没有办法使用纯 sql 做到这一点?
cmd 喜欢:spark-sql -e 'select * from csv.`xxx` where xxx=xxx'
唯一的方法是先创建一个临时视图,然后查询该视图?
【问题讨论】:
标签: apache-spark-sql command-line-interface
我希望从 spark-sql CLI 获得输出。但是数据是用“\t”分隔的CSV。有没有办法使用纯 sql 做到这一点?
cmd 喜欢:spark-sql -e 'select * from csv.`xxx` where xxx=xxx'
唯一的方法是先创建一个临时视图,然后查询该视图?
【问题讨论】:
标签: apache-spark-sql command-line-interface
您可以使用所有选项为现有数据创建表,例如:
create table if not exists table_name
using csv
OPTIONS (header "true", inferSchema "true", path ".....csv");
并在下一次调用中查询它。或者您可以在.sql 文件中包含此语句,然后通过-i 选项提供文件名,以便在您的select 查询之前执行。
【讨论】:
此命令使用分隔符“t”并创建表
spark-sql -e 'create table if not exists benchmark_eraseme
using csv
OPTIONS (header "true", delimiter "\t", path "/home/ec2-user/demo/customer_benchmark.csv");
select * from benchmark_eraseme;'
文件:
cat ~/demo/customer_benchmark.csv
id_customer description
49 client_1
8 Benchmark Gold
6 Benchmark Silver
7 Benchmark Regular
输出:
Time taken: 8.467 seconds
49 client_1
8 Benchmark Gold
6 Benchmark Silver
7 Benchmark Regular
Time taken: 0.548 seconds, Fetched 4 row(s)
我尝试使用临时视图,但至少在 Spark 3.2.1 版本中无法从 CSV 文件创建临时视图。
【讨论】: