如何通过Spark SQL的CREATE TABLE语句加载gzip压缩JSON数据到表
Spark SQL加载gzip压缩JSON文件的解决方案
Spark 3.1.2原生支持gzip压缩格式的JSON文件读取,加载失败可按以下步骤排查解决:
- 首先验证压缩文件有效性与权限
在集群节点执行命令校验gzip文件完整性:gzip -t /path/to/data.json.gz
如果命令返回报错,说明文件损坏,重新上传完整的压缩包即可。同时确认启动Hive Thrift Server2的运行用户对该文件路径有可读权限。 - 建表时显式指定压缩配置
建表时通过OPTIONS参数显式声明压缩格式,避免默认配置未适配的问题:CREATE TABLE IF NOT EXISTS test_table USING JSON OPTIONS ( path "/path/to/data.json.gz", compression "gzip" ) - 先测试文件读取能力再建表
先执行临时查询验证Spark可直接读取该压缩文件:
若该查询可正常返回结果,可调整会话参数后再建表:SELECT * FROM json.`/path/to/data.json.gz` LIMIT 10;SET spark.sql.hive.convertMetastoreJsonSerde = true; SET spark.sql.json.compression.codec = gzip; CREATE TABLE IF NOT EXISTS test_table USING JSON LOCATION "/path/to/data.json.gz"; - 多压缩文件适配
如果你有多个gzip格式的JSON文件,可将所有.gz文件放在同一个目录下,建表时LOCATION参数指定为该目录路径即可,Spark会自动识别目录内所有符合格式的压缩文件。
内容的提问来源于stack exchange,提问作者Rahul Prasad
相关产品推荐
相关产品推荐

