我有一个 Hadoop 集群,我使用 Hive 进行查询,我想连接两个大表,其中一个有小桶,从我读到的内容来看,如果我将两个表都存储在连接键上,那会帮助性能。
所以我的设置是:
SELECT /*+ MAPJOIN(a) */
count(*)
FROM a JOIN B ON a.join_key = b.join_key;
问题1:以上设置是否足以触发bucket map join?
问题 2: 我对 bucket map join 的理解是它启动一个本地任务,为每个 bucket 创建哈希表,然后将哈希 bucket 上传到每个映射器。这种理解是否正确?
问题3:如果上面的理解是正确的,那么为什么Hive会在本地进行散列呢?为什么不上传raw bucket,然后在map task中做hash,从而实现并行处理,速度更快?
最佳答案
以上设置是否足以触发bucket map join?
回答: 1)如果“总表/分区大小很大,不利于映射连接”,则进行桶映射连接。 所需的设置是: 设置 hive.optimize.bucketmapjoin = true;
2) 如果“表/分区大小没有限制非常大,即表大小”,则进行 SortMerge 桶连接。 所需的设置是: 设置 hive.optimize.bucketmapjoin = true; 设置 hive.optimize.bucketmapjoin.sortedmerge = true; 设置 hive.input.format=org.apache.hadoop.hive.ql.io.BucketizedHiveInputFormat;
我对 bucket map join 的理解是,它启动一个本地任务,为每个 bucket 创建哈希表,然后将哈希 bucket 上传到每个映射器。这种理解是否正确?
答案:在 Bucket map join 的情况下,1) hive 运行本地 map reduce join 来创建 HashTable 文件,2) 它压缩和归档文件并加载到分布式缓存(i- 大的哈希表文件会减慢分布式传播 缓存。 ii- 映射器正在等待来自分布式缓存的哈希表文件。 ) 3) 加载到 map Join 任务的映射器。
如果上述理解正确,那么为什么 Hive 在本地进行散列?为什么不上传raw bucket,然后在map task中做hash,从而实现并行处理,速度更快?
回答:如果文件很大,那么我们会遇到以下问题 i- 大哈希表文件会减慢分布式的传播速度 缓存。 ii- 映射器正在等待来自分布式缓存的哈希表文件。
因此,执行以下步骤将提高性能:
1) hive 运行本地 map reduce join 来创建 HashTable 文件,
2) 它压缩和归档文件并加载到分布式缓存
3) 加载到 map Join 任务的映射器。
这比映射连接或普通连接提供更好的性能。
关于database - Hive 的 Bucket Map Join,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12783908/
目录第1题连续问题分析:解法:第2题分组问题分析:解法:第3题间隔连续问题分析:解法:第4题打折日期交叉问题分析:解法:第5题同时在线问题分析:解法:第1题连续问题如下数据为蚂蚁森林中用户领取的减少碳排放量iddtlowcarbon10012021-12-1212310022021-12-124510012021-12-134310012021-12-134510012021-12-132310022021-12-144510012021-12-1423010022021-12-154510012021-12-1523.......找出连续3天及以上减少碳排放量在100以上的用户分析:遇到这类
为了防止在迁移到生产站点期间出现数据库事务错误,我们遵循了https://github.com/LendingHome/zero_downtime_migrations中列出的建议。(具体由https://robots.thoughtbot.com/how-to-create-postgres-indexes-concurrently-in概述),但在特别大的表上创建索引期间,即使是索引创建的“并发”方法也会锁定表并导致该表上的任何ActiveRecord创建或更新导致各自的事务失败有PG::InFailedSqlTransaction异常。下面是我们运行Rails4.2(使用Acti
目录:一、简介二、HQL的执行流程三、索引四、索引案例五、Hive常用DDL操作六、Hive常用DML操作七、查询结果插入到表八、更新和删除操作九、查询结果写出到文件系统十、HiveCLI和Beeline命令行的基本使用十一、Hive配置一、简介Hive是一个构建在Hadoop之上的数据仓库,它可以将结构化的数据文件映射成表,并提供类SQL查询功能,用于查询的SQL语句会被转化为MapReduce作业,然后提交到Hadoop上运行。特点:简单、容易上手(提供了类似sql的查询语言hql),使得精通sql但是不了解Java编程的人也能很好地进行大数据分析;灵活性高,可以自定义用户函数(UDF)和
我正在使用最新版本的Capistrano和我的Rails4应用程序。运行capdpeloy时。我得到了很多输出,包括这次失败:DEBUG[04b6e226]Running/usr/bin/env[-f/var/www/skateboxes/releases/20131022135522/config/database.yml]on162.243.33.179DEBUG[04b6e226]Command:[-f/var/www/skateboxes/releases/20131022135522/config/database.yml]DEBUG[04b6e226]Finishedin0
我想创建一个RailsController,从网上下载一系列jpg文件,并直接将它们作为二进制文件写入数据库(我不是要上传表格)关于如何做到这一点的任何线索?谢谢编辑:这是我已经使用attachment-fugem编写的一些代码:http=Net::HTTP.new('awebsite',443)http.use_ssl=truehttp.verify_mode=OpenSSL::SSL::VERIFY_NONEhttp.start(){|http|req=Net::HTTP::Get.new("image.jpg")req.basic_authlogin,passwordrespon
我们刚刚将虚拟机升级到我认为相同的ruby配置(通过RVM...Ruby1.9.2、Rails3.0.7、DataMapper1.1.0)。最大的区别是我们从MySQL5.0升级到5.1。出于某种原因,在我们的旧VM上运行的完全相同的代码/database.yml现在在我们的新VM尝试连接到数据库时失败了。问题是这个YAML:mysql_defaults:&mysql_defaultsadapter:mysqlencoding:UTF-8username:userpassword:passhost:localhostdevelopment:正在扩展到:"mysql_defaults
我正在开发一个通过表单发送数据的Rails应用程序。我想在表单发送之后,但在它被处理之前修改表单的一些“参数”。我现在拥有的{"commit"=>"Create","authenticity_token"=>"0000000000000000000000000""page"=>{"body"=>"TEST","link_attributes"=>[{"action"=>"Foo"},{"action"=>"Bar"},{"action"=>"Test"},{"action"=>"Blah"}]}}我想要什么{"commit"=>"Create","authenticity_token"
当我尝试使用capistrano部署我的应用程序时,我会收到此错误:failed:"sh-c'cp/var/www/my_app/releases/20120313115055/config/database.staging.yml/var/www/my_app/releases/20120313115055/config/database.yml'"onIP_ADDR我的database.yml即空的,database.staging.yml:production:adapter:mysql2encoding:utf8reconnect:falsedatabase:my_dbpool
我最近一直在研究NoSql选项。我的场景如下:我们从位于世界各地偏远地区的定制硬件收集和存储数据。我们每15分钟记录一次来自每个站点的数据。我们最终希望每1分钟移动一次。每条记录有20到200个测量值。一旦设置好硬件,每次都会记录和报告相同的测量值。我们面临的最大问题是我们从每个项目中获得了一组不同的衡量标准。我们测量大约50-100种不同的测量类型,但是任何项目都可以有任意数量的每种测量类型。没有可以容纳数据的预设列集。因此,当我们在系统上设置和配置项目时,我们创建并构建了每个项目数据表,其中包含所需的确切列。我们提供工具来帮助分析数据。这通常包括更多的计算和数据聚合,其中一些我们也
我从GitHub存储库克隆了一个应用程序文件夹,在捆绑安装gems之后,我尝试使用rakedb:setup和rakedb:migrate命令,但都没有用,这是我的错误消息:**arun997@promanager:~/workspace(master)$rakedb:setuprequire'rails/all'...2.470sBundler.require...7.590srakeaborted!Cannotload`Rails.application.database_configuration`:Couldnotloaddatabaseconfiguration.Nosuchf