报错:Codec [xxx] is not available. Available codecs are brotli,uncompressed,lz4,gzip,lzo,snappy,none

在尝试将数据写入Hive表时遇到了编码器不可用的问题,错误提示表明可能在建表语句中配置的Parquet压缩编码不正确。常见的Parquet压缩选项包括snappy、gzip和uncompressed。错误信息显示可用的codec有brotli、uncompressed、lz4、gzip、lzo、snappy和none。解决此问题需要检查建表语句,确保'PARQUET.compression'参数设置为系统支持的压缩编码。

写入到hive中报错,编码器不可用。
可能是建表语句中TBLPROPERTIES (‘PARQUET.compression’=‘xxx’)
xxx填错了。建议填snappy gzip uncompressed

EROR [Driver]  User class threw exception: java.lang.IllegalArgumentException:
 Codec [xxx] is not available. Available codecs are brotli,uncompressed,lz4,gzip,lzo,snappy,none

在这里插入图片描述

当遇到 'Error while processing statement: Cannot modify io.compression.codecs at runtime. It is not in list of params that are allowed to be modified at runtime' 错误,意味着在运行时尝试修改 `io.compression.codecs` 参数,而该参数不允许在运行时修改。以下是几种可能的解决方法: #### 1. 在配置文件中修改参数 `io.compression.codecs` 是一个静态配置参数,应该在配置文件中进行修改,而不是在运行时。对于 Hadoop 相关的系统,通常可以在 `core-site.xml` 或 `hdfs-site.xml` 中进行修改。 示例: 在 `core-site.xml` 中添加或修改以下内容: ```xml <configuration> <property> <name>io.compression.codecs</name> <value>org.apache.hadoop.io.compress.GzipCodec,org.apache.hadoop.io.compress.DefaultCodec,org.apache.hadoop.io.compress.BZip2Codec</value> </property> </configuration> ``` 修改完成后,需要重启相关的服务,如 Hadoop 集群,使配置生效。 #### 2. 避免在运行时修改参数 检查代码或脚本,确保没有在运行时尝试修改 `io.compression.codecs` 参数。例如,在 Java 代码中,避免使用类似以下的代码: ```java Configuration conf = new Configuration(); conf.set("io.compression.codecs", "new.codec.Class"); ``` #### 3. 确认配置需求 如果确实需要使用新的压缩编解码器,确保该编解码器已经正确安装并配置。同时,确认在配置文件中添加的编解码器类路径是正确的。 ### 示例代码 以下是一个简单的 Java 示例,展示如何读取配置文件中的 `io.compression.codecs` 参数: ```java import org.apache.hadoop.conf.Configuration; public class CompressionCodecConfig { public static void main(String[] args) { Configuration conf = new Configuration(); String codecs = conf.get("io.compression.codecs"); System.out.println("io.compression.codecs: " + codecs); } } ```
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值