草庐IT

hadoop-mapreduce

全部标签

hadoop - 如何使用 ORC 存储 Hive 表以进行复杂查询?

也许这个问题太笼统了,但我认为值得一试。我正在处理一个包含270个字段的表。它按日期分区(如dt=20180101)。然而,当我们用查询访问这个表时,我们实际上是在进行全表扫描,因为我们在where子句中使用了不是dt的字段。我想知道为该表启用分桶的正确方法是什么。我可以选择其中一个where子句字段并为此启用分桶。例如:PARTITIONEDBY(dtINT)CLUSTEREDBY(class)INTO16BUCKETS另一种方法是使用多个字段进行分桶:PARTITIONEDBY(dtINT)CLUSTEREDBY(class,other_field,other_field_2)IN

hadoop - 使用安全策略在 RHEL 机器上设置 Hadoop

我在CentOS上安装Hadoop已经有一段时间了,但今天当我转向RHEL时,我在尝试启动伪分布式集群时收到了讨厌的密码提示。经过几个小时的摸索,我终于设法通过删除我在安装RHEL期间选择的安全策略来摆脱它们。看起来安全策略的某些方面不允许我设置无密码SSH以允许不同的服务器进行通信。展望future,我希望能够在启用了安全策略的机器上运行集群。为了获得正确的网络配置集,我需要进行哪些更改,或者我应该从哪里开始研究? 最佳答案 Igotpeskypasswordpromptswhentryingtostartthepseudo-di

hadoop - 我们可以在查询之前对 Hive 表的列进行排序吗?

我的Hive表是ORC格式,当where子句中的列排序时,其中的查询运行最快。但就我而言,目前没有。在查询之前对列进行排序的语法是什么。 最佳答案 如果我正确理解你的问题,你有一个未排序的ORC表。并且您想查询该表,但想在查询“之前”对数据进行“排序”!这没有任何意义,因为您将触发一些“查询”以对已排序的数据触发另一个查询。排序可能是一项代价高昂的操作,具体取决于您的实现方式。但是,在查询数据时可以使用许多其他选项来加快查询速度。遵循一些细节。使用Tez执行引擎。它比Hive启动的传统MR作业快得多。启用谓词下推(PPD)以在存储层

hadoop - Sparksession 错误是关于配置单元的

我的操作系统是windows10frompyspark.confimportSparkConfsc=SparkContext.getOrCreate()spark=SparkSession.builder.enableHiveSupport().getOrCreate()这段代码给我以下错误Py4JJavaErrorTraceback(mostrecentcalllast)~\Documents\spark\spark-2.1.0-bin-hadoop2.7\python\pyspark\sql\utils.pyindeco(*a,**kw)62try:--->63returnf(*a

java - 计算每个重叠间隔数的最佳 MapReduce 算法

[a,b]格式有数十亿个区间,它们都会将数字空间切割成多个单片。我打算输出所有单件,其中重叠间隔的数量在这件作品中。例如:有3个区间,分别是:[1,7]、[2,3]、[6,8]。它应该输出如下结果:[-∞,1]:0[1,2]:1[2,3]:2[3,6]:1[6,7]:2[7,8]:1[8,+∞]:0如果对于单个机器(不是MapReduce中的分布式解决方案),我知道解决方案可以将间隔实例分解为start_n、end_n,排序数字并从左到右迭代并使用计数器来计算当前件和输出中的数量。但我不确定如何将此算法拆分为分布式方式。有什么建议吗?谢谢。 最佳答案

java - Hadoop MapReduce : context. 写入更改值

我是Hadoop的新手,正在编写MapReduce作业,我遇到了一个问题,它似乎是reducerscontext.write方法正在将正确的值更改为不正确的值。MapReduce作业应该做什么?统计总字数(intwordCount)计算不同单词的数量(intcounter_dist)统计以“z”或“Z”开头的单词数(intcounter_startZ)统计出现次数少于4次的单词(intcounter_less4)所有这些都必须在单个MapReduce作业中完成。正在分析的文本文件Hellohowzouzouzouzouhowareyou正确输出:wordCount=9counter_d

hadoop - Spark - 如何在 HDFS 中重组目录

我有一个结构如下的目录:temp/Tweets/userId123/Tweets.csvtemp/Tweets/userId456/Tweets.csvtemp/Tweets/userId789/Tweets.csvtemp/Mentions/userId123/Mentions.csvtemp/Mentions/userId456/Mentions.csvtemp/Mentions/userId789/Mentions.csv...数据由数据实体的类型构成,我想由用户对其进行重组,如下所示:final/userId123/Tweets.csvfinal/userId123/Menti

Hadoop 的默认分区器 : HashPartitioner - How it calculates hash-code of a key?

我试图了解MapReduce中的分区,我了解到Hadoop有一个默认的分区程序,称为HashPartitioner,分区程序有助于在决定给定键将转到哪个reducer时。从概念上讲,它是这样工作的:hashcode(key)%NumberOfReducers,where`key`isthekeyinpair.我的问题是:HashPartitioner如何计算key的哈希码?是简单地调用key的hashCode()还是此HashPartitioner使用一些其他逻辑来计算key的哈希码?谁能帮我理解一下? 最佳答案 默认的分区器简单地

javascript - MongoDB mapReduce 每分钟文档计数由附加类别字段分隔

我有一个具有以下架构的MongoDB集合:constMessageSchema={message:{type:String},category:{typeString,allowedValues:['a','b','c','d','e']},createdAt:{type:Date}}这些消息文档是在随机时间间隔创建的。我想创建一个图表所需的数据集,该图表绘制每个类别的每分钟消息数(计数)。输出将是一个包含键time、a.count、b.count、c.count、d.count和e.count的对象数组。生成的数据集应仅考虑上周的数据,而不是更早的数据。数据集可能非常大。我想我可以用

java - 在 MapReduce 中调用具有不同 InputFormatClass 的多个 Mapper

我想用三个Mapper编写代码,其中两个将处理".csv"文件,其他是".xml"。我已经为来自here的.xml格式编写了XmlInputFormat现在我想知道我应该输入什么job.setInputFormatClass(...);还有我应该添加哪个以提供文件路径。TextInputFormat.addInputPath(...)TextOutputFormat.setInputPath(...)或TextInputFormat.addInputPath(...)TextOutputFormat.setInputPath(...) 最佳答案