Hive开发指南:Hive小技巧和Datagrip插入数据报错问题

(1)配置打印当前数据库

比如:在shell中,可以查看到当前数据库的名字
在hive的家目录下的conf文件夹下,创建  .hiverc 文件
cd /opt/installs/hive/conf 下面
touch .hiverc

在这个.hiverc 文件中,添加:
set hive.cli.print.current.db=true;

Hive开发指南:Hive小技巧和Datagrip插入数据报错问题_第1张图片

 注:配置完成后要重新进入 

(2)开启本地化模式

为了在小规模数据处理场景下提升性能、降低资源消耗和简化调试流程,开启本地化模式是非常有必要的。

以下这个配置(添加到.hiverc 文件中)是使用本地资源跑MR任务:
 
set hive.exec.mode.local.auto=true;
set hive.exec.mode.local.auto.inputbytes.max=134217728;
set hive.exec.mode.local.auto.input.files.max=4;

经过测试,同样插入一个表的数据,本地模式插入速度远远快于集群模式。因为处理小数据不需要调用集群,调用集群会耗费大量时间。 

假如你使用的是DataGrip,需要在console中,输入以下命令设置本地模式:

set hive.exec.mode.local.auto=true;
set hive.exec.mode.local.auto.inputbytes.max=134217728;
set hive.exec.mode.local.auto.input.files.max=4;

假如遇到运行失败的语句,记得查看日志:/tmp/root/hive.log 文件。

若是如下错误:

2024-08-21T22:26:11,380  WARN [99af8a48-832e-460a-a7e3-19b6db1f84cb main] metastore.HiveMetaStoreClient: Got error flushing the cache
org.apache.thrift.transport.TTransportException: null
	at org.apache.thrift.transport.TIOStreamTransport.read(TIOStreamTransport.java:132) ~[hive-exec-3.1.2.jar:3.1.2]

 官方说法:

在执行Hive插入数据时遇到org.apache.hadoop.hive.ql.metadata.HiveException: org.apache.thrift.transport.TTransport错误。官方认为这是由于在创建表时列属性设置不当导致的bug。解决方法包括在建表前设置特定属性,或者如果表已创建,可通过执行load数据操作从本地加载数据,从而解决问题。

因为不影响结果,另外我们以后也很少使用 insert 插入数据,所以不予解决。

如果查看到是这个错误: 

Caused by: java.lang.OutOfMemoryError: Java heap space
    at org.apache.hadoop.mapred.MapTask$MapOutputBuffer.init(MapTask.java:1001) ~[hadoop-mapreduce-client-core-3.3.1.jar:?]
    at org.apache.hadoop.mapred.MapTask.createSortingCollector(MapTask.java:409) ~[hadoop-mapreduce-client-core-3.3.1.jar:?]
    at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:455) ~[hadoop-mapreduce-client-core-3.3.1.jar:?]
    at org.apache.hadoop.mapred.MapTask.run(MapTask.java:350) ~[hadoop-mapreduce-client-core-3.

说明Hive的内存不够用了,需要在hive-env.sh 中设置:

 

 然后重新启动服务即可。

若出现如下错误:

Hive开发指南:Hive小技巧和Datagrip插入数据报错问题_第2张图片

  要么设置启用本地模式:

set hive.exec.mode.local.auto=true;

要么在hadoop的yarn-site.xml中,添加如下配置:


   	yarn.scheduler.minimum-allocation-mb
   	2048
   	default value is 1024

 记得,将yarn-site.xml分发到其他两个服务器上。然后重启yarn即可。

 若完成上述配置仍无法解决Error while processing statement: FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.StatsTask这个错误,可以通过禁用 Hive 的自动统计信息收集功能来解决此问题。执行以下命令:

set hive.stats.column.autogather=false;

此方法可以避免统计信息收集导致的错误。

 

你可能感兴趣的:(hive,hadoop,数据仓库)