如何使用spark-sql CLI将CSV数据直接加载写入Parquet表
问题解答
可直接用1-2条spark-sql命令完成全流程
第一步:单条命令完成CSV转Parquet,同时创建可查询表
执行以下spark-sql命令,替换对应路径和CSV配置即可:
spark-sql -e "CREATE TABLE local_parquet_data STORED AS PARQUET LOCATION '/your/local/parquet/save/path' AS SELECT * FROM csv.`/your/local/csv/file/path` OPTIONS (header 'true', inferSchema 'true', sep ',')"
你可以根据实际CSV的属性调整OPTIONS内的参数,比如是否有表头header、分隔符sep、编码等;如果有明确的表结构,建议替换inferSchema为手动指定schema,避免类型推断误差和提升加载效率。
第二步:直接对转换后的Parquet数据执行SQL查询
转换完成后,直接通过spark-sql执行查询语句即可,示例:
spark-sql -e "SELECT col1, count(*) FROM local_parquet_data GROUP BY col1"
无持久化表需求的最简转换方案
如果你不需要在Spark元数据中保留对应表,只需要做文件格式转换,后续查询直接读Parquet路径,可以用更短的spark-shell单行命令完成转换:
spark-shell -e "spark.read.option('header','true').csv('/your/local/csv/path').write.parquet('/your/local/parquet/path')"
后续查询时不需要提前建表,直接在spark-sql中指定Parquet路径查询即可:
SELECT * FROM parquet.`/your/local/parquet/path` WHERE col1 > 100
内容的提问来源于stack exchange,提问作者davenielsen
相关产品推荐
相关产品推荐

