草庐IT

平分分区

全部标签

sql - Hive 优化器对于涉及分区表的连接表现不佳

我使用的是Hive版本0.7.1-cdh3u2我有两个大表(比方说)A和B,都按天分区。我正在运行以下查询selectcol1,col2fromAjoinBon(A.day=B.dayandA.key=B.key)whereA.day='2014-02-25'当我查看mapreduce任务的xml文件时,我发现mapred.input.dir包括A/2014-02-25和B所有天的所有hdfs目录,而不仅仅是特定的一天('2014-02-25').这需要花费大量时间和更多的reduce任务。我也试过用selectcol1,col2fromAjoinBon(A.day=B.dayandA

java - 在 map reduce 中使用自定义分区程序应该遵循哪个逻辑来解决这个问题

如果文件中的键分布是99%的单词以'A'开头,1%的单词以'B'到'Z'开头,并且您必须计算每个字母开头的单词数,您将如何计算有效地分发您的key? 最佳答案 解决方案1:我认为要走的路是组合器,而不是分区器。组合器将聚合以字母“A”开头的单词的本地总和,然后将部分总和(而不是始终为数字1)发送给缩减器。解决方案2:但是,如果您坚持为此使用自定义分区器,您可以简单地在一个单独的reducer中处理以字母“A”开头的单词,而不是所有其他单词,即,专用一个reducer仅适用于以字母“A”开头的单词。解决方案3:此外,如果您不介意“作弊

hadoop - PySpark 重新分区 RDD 元素

我有一个spark作业,它从Kafka流中读取数据并为流中的每个RDD执行一个操作。如果RDD不为空,我想把RDD保存到HDFS,但是我想为RDD中的每个元素创建一个文件。我找到了RDD.saveAsTextFile(file_location)将为每个分区创建一个文件,因此我试图更改RDD,使每个分区仅包含一个元素。这是我正在尝试做的一个例子data=sc.parallelize(['1','2','3','4','5','6','7','8','9','0'])data.glom().collect()#Produces[['1','2','3','4','5'],['6','7'

hadoop - Spark SQL分区感知查询配置单元表

给定按some_field(int类型)Hive表分区,数据存储为Avro文件,我想使用SparkSQL查询表,返回的数据帧必须已经按some_field(用于分区)分区。查询看起来像SELECT*FROMsome_table默认情况下Spark不会这样做,返回的data_frame.rdd.partitioner是None。获得结果的一种方法是在查询后通过显式重新分区,但可能有更好的解决方案。HDP2.6、Spark2。谢谢。 最佳答案 首先,您必须区分Dataset的分区和转换后的RDD[Row]的分区。不管前者的执行计划是什么

ruby - hadoop流,如何设置分区?

我是hadoop流的新手,在分区方面遇到了一些困难。根据在一行中找到的内容,我的映射器函数要么返回key1,0,somegeneralvalues#somekindof"header"linewherelinetype=0或key1,1,value1,value2,othervalues...#"data"line,differentvalues,linetype=1为了正确减少,我需要将具有相同key1的所有行分组,并按值1、值2和线型(0或1)对它们进行排序,例如:10foobar...#headerfirst11888999....#dataline,withlowervalue

shell - 如何检查HIVE中是否存在任何特定分区

如何检查HIVE中是否存在任何特定分区:我的hive表中有如下分区:国家=印度/州=MH国家=美国/州=纽约我想检查country="somethingandstate="something"是否存在于HIVE或使用shell脚本中。请帮忙 最佳答案 descmytable分区(...)显示像mytable分区一样扩展的表(...)使用hive-e'...'从shell执行演示createtablemytable(iint)partitionedby(yearint,monthtinyint,daytinyint);insertin

hadoop - 使用load命令加载数据到hive静态分区表

如果它是非常基本的,请不要介意:测试.txt1拉维100海德2克里希纳200海德3fff300秒我在hive中创建了一个表,在city上进行了分区,并加载了如下数据:createexternaltabletemp(idint,namestring,salint)partitionedby(citystring)location'/testing';将路径“/test.txt”中的数据加载到表临时分区(city='hyd');在HDFS中,结构是/testing/temp/city=hyd/test.txt当我将表查询为“select*fromtemp”时;输出:temp.idtemp.

hadoop - 你能改变 Hive 表的动态分区格式吗?

序曲我正在使用具有动态分区的外部Hive表。SEThive.exec.dynamic.partition=trueSEThive.exec.dynamic.partition.mode=nonstrict表格看起来像这样:CREATEEXTERNALTABLE`some_test`(`id`bigint,`timestamp`int,`some_other_values`bigint)PARTITIONEDBY(`year`int,`month`int,`day`int,`hour`int)ROWFORMATSERDE'org.apache.hadoop.hive.ql.io.parq

hadoop - 无法更改或删除影响很大的分区表 - 由 : MetaException: Timeout when executing 引起

我有几个impala分区表,它们有超过50k的分区,除了HiveMetastore操作,如DROP和ALTER...RENAME,我遇到此错误消息:Query:droptablecarsERROR:ImpalaRuntimeException:Errormaking'dropTable'RPCtoHiveMetastore:CAUSEDBY:MetaException:Timeoutwhenexecutingmethod:drop_table_with_environment_context;600003msexceeds600000ms不知道是不是内存的问题?或者这是正常的,我应该调

hadoop - Hive Table 添加分区加载所有子目录

我正在使用配置单元(带有外部表)来处理存储在amazonS3上的数据。我的数据分区如下:group/team/dt/(例如,数据文件可能存储在路径group=myGroup/team=myTeam/dt=20120603)我想为多个团队(在不同的组中)处理数据。由于RCOVERPARTITIONS需要很长时间,我想将基于组和团队值的多个分区添加到配置单元表中(即,给定一个组和团队加载该团队中所有可用日期的数据)。我正在寻找的功能是:CREATEEXTERNALTABLEmyData(attr1string,attr2string,attr3string)PARTITIONEDBY(gr