草庐IT

库存分桶

全部标签

hadoop - 如何更新分桶式和 orc 格式的配置单元表中的多列

我可以更新单个列,但不能更新从另一个表引用的多个列。我启用了所有ACID属性以支持配置单元(1.2.1)表更新。我有两个表,表1:架构:createtabletable1(emp_idint,emp_namestring,etimetimestamp);数据:员工编号|员工姓名|时间1|大卫|2016-01-0812:27:302|约翰|2016-01-0812:27:45表2架构:创建表table2(emp_idint,emp_namestring,etimetimestamp)集按(emp_id)聚类到4个存储桶中存储为orcTBLPROPERTIES('transactional

hadoop - 插入 Hive 分桶表时出现负数组大小异常

我正在尝试插入到一个配置单元分桶排序表中,但遇到了由reducer抛出的负数组大小异常。请在下面找到堆栈跟踪。Error:org.apache.hadoop.mapreduce.task.reduce.Shuffle$ShuffleError:errorinshuffleinfetcher#3atorg.apache.hadoop.mapreduce.task.reduce.Shuffle.run(Shuffle.java:134)atorg.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:376)atorg.apache.had

hadoop - 我们什么时候应该在配置单元中进行分区和分桶?

我了解Hive表中分区和分桶的概念。但我想知道的是“我们什么时候进行分区,什么时候进行分桶?”什么是适合分区和分桶的理想场景? 最佳答案 使用分区和分桶的主要原因。分区:表数据分区是为了水平分布负载。示例:如果我们有一个名为“Parts”的非常大的表,并且我们经常运行“where”查询,将结果限制为特定的PartType。为了更快的查询响应,可以按(PART_TYPESTRING)对表进行分区。一旦对表进行分区,它就会改变Hive构建数据存储的方式,Hive现在将创建反射(reflect)分区结构的子目录,例如:.../Parts/

hadoop - Hive 扫描分桶表的整个数据

我试图通过将数据存储在单个列上来优化配置单元SQL。我用以下语句创建了表CREATETABLE`source_bckt`(`uk`string,`data`string)CLUSTEREDBY(uk)SORTEDBY(uk)INTO10BUCKETS然后执行"sethive.enforce.bucketing=true;"后插入数据当我运行以下选择"select*fromsource_bcktwhereuk='1179724';"即使数据应该位于单个文件中,可以通过以下等式HASH('1179724')%10生成的mapreduce扫描整个文件集。有什么想法吗?

hadoop - Hive 中的分桶未优化

我有基于flightnum列的分桶表(10个桶),数据大小约为700MB,也强制分桶。当我执行查询时:从flight_buck中选择count(flightnum),其中flightnum=10;在大约46秒内得到响应。映射器总数为27。在具有相同数据的非分桶表上执行相同的查询时:selectcount(flightnum)fromflight_tempwhereflightnum=10;在大约47秒内得到响应。使用的映射器总数为30。为什么我会在同样的时间内收到回复? 最佳答案 Bucketing有助于join更快,为了提高简单的

hadoop - Hive 不强制分桶

我正在阅读TomWhite的O'ReillyHadoop书中的Hive教程。我正在尝试制作一个分桶表,但我无法让Hive创建分桶。我可以创建表格并将数据加载到其中,但所有数据随后都存储在一个文件中。我正在运行一个伪分布式Hadoop集群。我将Hadoop1.2.1和Hive0.10.0与MySql元存储一起使用。数据(如下所示)最初位于“用户”表中。他们将被放在一个有4个桶的表中,即每个桶一个用户。select*fromusers;OKidname0Nat2Joe3Kay4Ann我设置了以下属性以尝试强制分桶(我认为没有必要明确设置mapred.reduce.tasks,但我将其包括在

hadoop - 现有表的 Hive 分桶和分区

是否可以为已经包含数据的表创建分桶和分区?我在hive中有一个表,其中包含超过100M的记录,我想在该表上创建一个分区。我还需要创建分桶。这可能吗?谢谢,巴拉 最佳答案 不,不可能在预加载的表中更改分桶和分区,您可能必须创建一个具有所需分桶和分区属性的新表,然后从旧表加载它。sethive.enforce.bucketing=true;FROMold_tableinsertintotablenew_bucketed_partitioned_tableselect*; 关于hadoop-现

hadoop - 什么时候我们不应该在配置单元中使用分桶?

我们什么时候不应该在Hive中使用分桶?该技术的瓶颈是什么? 最佳答案 我想当您无法从中受益时,您不必使用分桶。据我所知,分桶的主要好处包括:更高效的采样和映射端连接(见下文)。因此,如果您的表很小或者您不需要快速采样和映射端连接就不要使用它,因为您需要记住您必须在插入之前对数据进行存储,手动或使用sethive。enforce.bucketing=true;没有瓶颈,它只是允许您在某些情况下利用的一种可能的数据布局。Hive映射端连接示例(seemorehere):Ifthetablesbeingjoinedarebucketiz

hadoop - Hive中分区和分桶的结构区别

我创建了两个表:1)一个用分桶进行分区2)只有分桶表我知道Hive中分区和分桶的概念。但我有点困惑,因为我读过'partitioncreatesdirectoryandbucketingcreatesfiles'。我同意第一部分,因为我可以在HDFSHiveWarehouse中看到它,但我无法在HDFS中看到ONLY分桶表的任何文件,除了我加载到表中的数据文件。那么ONLY分桶表的文件在哪里呢?我能够在分区目录下看到的文件是不是像eg:00000_0这样的文件,但是这个文件可以用于分区表,但是另一个分桶表呢??下面是我创建表格的代码:CREATETABLEEmployee(IDBIGI

hadoop - 我可以通过在 Hive 中通过 "CREATE TABLE AS SELECT....."创建的表进行聚类/分桶吗?

我正在尝试在Hive中创建一个表CREATETABLEBUCKET_TABLEASSELECTa.*FROMTABLE1aLEFTJOINTABLE2bON(a.key=b.key)WHEREb.keyISNUllCLUSTEREDBY(key)INTO1000BUCKETS;此语法失败-但我不确定是否可以执行此组合语句。有任何想法吗? 最佳答案 遇到这个问题,发现没有提供答案。我进一步查看并在Hive文档中找到了答案。这永远行不通,因为CTAS有以下限制:目标表不能是分区表。目标表不能是外部表。目标表不能是列表分桶表。来源:htt