草庐IT

搞机分区

全部标签

hadoop - 自定义分区程序示例

我正在尝试为有些倾斜的输入数据编写一个新的Hadoop作业。对此的一个类比是Hadoop教程中的单词计数示例,除了可以说一个特定的单词出现了很多次。我想要一个分区函数,其中一个键将根据它们通常的哈希分区映射到多个reducer和其余键。这可能吗?提前致谢。 最佳答案 不要以为在Hadoop中同一个key可以映射到多个reducer。但是,可以对键进行分区,以便reducer或多或少地均匀加载。为此,应对输入数据进行采样并对键进行适当分区。检查YahooPaper有关自定义分区程序的更多详细信息。Yahoo排序代码在org.apach

hadoop - 按时间戳字段分区的表

为了生成一些汇总数据,我们定期将数据导入Hive。我们目前使用的是CSV文件格式,其布局如下:operation,item,timestamp,user,marketingkey目前我们有一些查询正在对时间戳字段的日期(yyyy-mm-dd)执行分组。正在导入的文件有时会保存多天,我想以分区方式存储它。有没有办法用Hive做到这一点,我已经基于以下DDL构建了表:CREATETABLEpartitionedTable(namestring)PARTITIONEDBY(timebigint)ROWFORMATDELIMITEDFIELDSTERMINATEDBY',';数据加载是这样完成

hadoop - 创建HIVE分区表HDFS定位辅助

当然希望有人可以通过基于驻留在HDFS目录中的逗号分隔文件自动添加数据来帮助我创建外部HIVE分区表。我的理解或缺乏理解是,当您定义CREATEEXTERNALTABLE、PARTITIONED并为其提供LOCATION时,它应该递归扫描/读取每个子目录,并将数据加载到新创建的分区外部表中。下面应该提供一些额外的洞察我的麻烦......SampleHDFSdirectorystructure:/data/output/dt=2014-01-01/data/output/dt=2014-01-02/data/output/dt=2014-01-03.../data/output/dt=2

hadoop - 在日期/时间范围内查询配置单元分区表

我的hive表按年、月、日、小时分区现在我想获取从2014-05-27到2014-06-05的数据我该怎么做??我知道一个选项是在纪元(或yyyy-mm-dd-hh)上创建分区并在查询中传递纪元时间。我可以在不丢失日期层次结构的情况下做到这一点吗??表结构CREATETABLEIFNOTEXISTStable1(col1int,col2int)PARTITIONEDBY(yearint,monthint,dayint,hourint)STOREDASTEXTFILE; 最佳答案 这是我们在hive中查询表时每天遇到的类似场景。我们已

hadoop - Hive:当插入分区表时,在大多数行中,hive double url-encode partition key column

我创建了一个分区表:createtablet1(amountdouble)partitionedby(events_partition_keystring)storedaspaquet;向tmp_table添加了一些数据,其中'events_partition_key'列包含以下格式的时间戳(字符串类型):“2018-02-2500:00:00”然后我向分区表中插入一些数据。insertintotablet1partition(events_partition_key)selectamount,events_partition_keyfromtmp_table当从新的分区表t1中选择时

hadoop - 具有嵌套选择和分区修剪的配置单元 View

我在HIVE中有一个带有子选择的View-该View的目的是从源表中删除重复项。源表按source_system列分区。CREATEVIEWmyviewASSELECT*FROM(SELECT*,row_number()OVER(PARTITIONBYsource_system,keyORDERBYmodification_dateDESC)asseq_rnFROMmytable)tWHEREseq_rn=1;问题是如果我这样做EXPLAINDEPENDENCYSELECT*FROMmyviewWHEREsource_system='AAA'我看到正在扫描所有分区,因此没有进行分区修剪

hadoop - 使用插入覆盖分区的配置单元压缩

试图通过在hadoop中使用Insertoverwritepartition命令压缩hive分区下的文件来解决小文件问题。查询:SEThive.exec.compress.output=true;SETmapred.max.split.size=256000000;SETmapred.output.compression.type=BLOCK;SETmapred.output.compression.codec=org.apache.hadoop.io.compress.SnappyCodec;sethive.merge.mapredfiles=true;sethive.merge.s

hadoop - 如何使用 HIVE 对表进行分区?

我已经使用Hive玩了几天了,但我仍然很难处理分区。几个月来,我一直在Hadoop中记录Apache日志(Combine格式)。它们以行文本格式存储,按日期分区(通过水槽):/日志/yyyy/mm/dd/hh/*例子:/logs/2012/02/10/00/Part01xx(02/10/201212:00am)/logs/2012/02/10/00/Part02xx/logs/2012/02/10/13/Part0xxx(02/10/201201:00pm)combinedlog中的日期文件遵循此格式[10/Feb/2012:00:00:00-0800]如何在使用我的物理分区的Hive

hadoop - hive外部分区表

首先我创建了按代码和日期分区的配置单元外部表CREATEEXTERNALTABLEIFNOTEXISTSXYZ(IDSTRING,SALBIGINT,NAMESTRING,)PARTITIONEDBY(CODEINT,DATESTRING)ROWFORMATSERDE'parquet.hive.serde.ParquetHiveSerDe'STOREDASINPUTFORMAT"parquet.hive.DeprecatedParquetInputFormat"OUTPUTFORMAT"parquet.hive.DeprecatedParquetOutputFormat"LOCATIO

hadoop - 将文件分区为日期从 kafka 写入 hdfs 的最有效方法是什么

我正在研究应该通过kafka写入hdfs的项目。假设有在线服务器将消息写入kafka。每条消息都包含时间戳。我想根据消息中的时间戳创建一个输出将是一个文件的作业。比如kafka中的数据是{"ts":"01-07-201315:25:35.994","data":...}...{"ts":"01-07-201316:25:35.994","data":...}...{"ts":"01-07-201317:25:35.994","data":...}我想得到3个文件作为输出kafka_file_2013-07-01_15.jsonkafka_file_2013-07-01_16.jsonk