配置单元中的许多分区

0yg35tkg  于 2021-06-03  发布在  Hadoop
关注(0)|答案(3)|浏览(314)

对于列“id”,我有大约200000个不同的值,并且在一个动态分区的配置单元表中使用它作为分区键。
现在创建了分区,当我尝试查询时(我使用了simple Select * 查询),它总是返回以下错误:

  1. FAILED: SemanticException org.apache.hadoop.hive.ql.metadata.HiveException: org.apache.thrift.transport.TTransportException: java.net.SocketTimeoutException: Read timed out

有人能告诉我为什么吗?

oknwwptz

oknwwptz1#

对于配置单元来说,动态分区太多了。尝试减少分区的数量。

vom3gejh

vom3gejh2#

您可以从id的除法中选择*例如;

  1. select * from where id >0 and id < 50000
  2. select * from where id >=50000 and id =< 100000
  3. ...

因为对于每个动态分区,hive分配一个内存部分。这种类型的查询需要更少的内存,但是整个过程需要更多的时间。

idfiyjo8

idfiyjo83#

利用“id”列上配置单元(新引入的)的索引功能。分区不是一个好主意当太多的分区正在创建时,它会增加名称节点上的负载来跟踪每个创建的分区。

相关问题