开发者社区 > 弹性计算 > 云服务器ECS > 正文

通过spark-sql客户端往hive的一个表随便插入一条数据,然后在hive中查询这个表报错.

已解决

通过spark-sql客户端往hive的一个表随便插入一条数据,然后在hive中查询这个表报错:SQL 错误: java.lang.NoClassDefFoundError: Could not initialize class org.xerial.snappy.Snappy。
我在spark-sql客户端查询这个表都能正常查出来。

环境说明:
spark版本为:3.4.2
hive表格式为:parquet
spark已经配置好连接hive的元数据。

请问这是怎么回事呢?

展开
收起
游客fuzojzpl5x2bu 2024-02-27 15:15:28 89 0
1 条回答
写回答
取消 提交回答
  • 阿里云大降价~
    推荐回答

    这个错误可能是由于Hive和Spark之间的依赖关系不匹配导致的。请检查您的Hive和Spark版本是否兼容,并确保在Hive中正确配置了Snappy压缩库。

    您可以尝试以下步骤来解决这个问题:

    1. 确保Hive和Spark的版本兼容。您可以查看官方文档或社区论坛了解兼容性信息。

    2. 在Hive的配置文件(hive-site.xml)中添加以下配置,以启用Snappy压缩支持:

    <property>
      <name>hive.exec.compress.output</name>
      <value>true</value>
    </property>
    <property>
      <name>hive.exec.compress.intermediate</name>
      <value>true</value>
    </property>
    <property>
      <name>hive.exec.compress.codec</name>
      <value>org.apache.hadoop.io.compress.SnappyCodec</value>
    </property>
    
    1. 重启Hive服务以使配置生效。

    2. 重新尝试在Hive中查询表,看是否仍然出现错误。如果问题仍然存在,请查阅相关文档或寻求社区支持以获取更多帮助。

    2024-02-29 15:13:26
    赞同 展开评论 打赏

云服务器ECS是一种安全可靠、弹性可伸缩的IaaS级云计算服务。在这里你可以获取最新的ECS产品资讯、最前沿的技术交流以及优惠活动等信息,加速自己的技术成长。

相关电子书

更多
SQL Server 2017 立即下载
GeoMesa on Spark SQL 立即下载
原生SQL on Hadoop引擎- Apache HAWQ 2.x最新技术解密malili 立即下载