草庐IT

分区分表

全部标签

java - 使用 -libjars 的 MapReduce 流作业,自定义分区程序失败 : "class not found"

我正在尝试将自定义(java)分区程序附加到我的MapReduce流作业。我正在使用这个命令:../bin/hadoopjar../contrib/streaming/hadoop-streaming-1.2.1.jar\-libjars./NumericPartitioner.jar-Dmapred.map.tasks=12-Dmapred.reduce.tasks=36\-input/input-output/output/keys-mapper"map_threeJoin.py"-reducer"keycount.py"\-partitionernewjoin.NumericPa

java - TotalOrderPartitioner 忽略分区文件位置

我试图用TotalOrderPartitioner做一个简单的排序示例。输入是一个序列文件,以IntWritable为键,以NullWritable为值。我想根据键排序。的输出是一个以IntWritable为键,以NullWritable为值的序列文件。我在集群环境中运行这项工作。这是我的驱动程序类:publicclassSortDriverextendsConfiguredimplementsTool{@Overridepublicintrun(String[]args)throwsException{Configurationconf=this.getConf();Jobjob=J

scala - Spark-scala 如何使用 HDFS 目录分区

为了减少处理时间,我按日期对数据进行分区,以便我只使用所需的日期数据(不是完整的表格)。所以现在在HDFS中,我的表格存储如下src_tbl//maindirtrg_tbl2016-01-01//subdir2015-12-302016-01-022015-12-312016-01-032016-01-012016-01-03现在我想从src_tbl中选择min(date)这将是2016-01-01从trg_tbl我想使用>=2016-01-01(src_tblmin(date))目录中的数据2016-01-01和2016-01-03数据`如何使用Spark-scala从hdfs选择所

sql - 使用一条插入语句在多个分区中插入数据

我有表A和表B,其中B是A使用名为X的字段的分区表。当我想从A向B插入数据时,通常会执行如下语句:INSERTINTOTABLEBPARTITION(X=x)SELECTFROMAWHEREX=x现在我想要实现的是能够插入一系列X,比方说x1、x2、x3...我怎样才能在一个语句中实现这一点? 最佳答案 使用动态分区加载:sethive.exec.dynamic.partition=true;sethive.exec.dynamic.partition.mode=nonstrict;INSERTOVERWRITETABLEtable

java - 为分区程序输出单个文件

尝试获得与键数一样多的reducerpublicclassCustomPartitionerextendsPartitioner{publicintgetPartition(Textkey,Textvalue,intnumReduceTasks){System.out.println("InCustomP");return(key.toString().hashCode())%numReduceTasks;}}驱动类job6.setMapOutputKeyClass(Text.class);job6.setMapOutputValueClass(Text.class);job6.set

hadoop - Hive 中的范围分区

Hive是否支持范围分区?我的意思是hive是否支持如下内容:insertoverwritetabletable2PARTITION(employeeIdBETWEEN2001and3000)selectemployeeNameFROMemp10whereemployeeIdBETWEEN2001and3000;其中table2和emp10有两列:员工姓名&员工编号当我运行上面的查询时,我遇到了一个错误:FAILED:ParseExceptionline1:56mismatchedinput'BETWEEN'expecting)near'employeeId'indestination

hadoop - 在 Hive 表中插入覆盖分区 - 值重复

我创建了一个包含非分区表的Hive表,并使用选择查询将数据插入到分区Hive表中。Referedsite通过上面的链接,我的分区表包含重复值。以下是设置这是我的示例员工数据集:link1我尝试了以下查询:link2但是在更新Hive表中的值之后,将EmployeeID为19的Steven的薪水更新为50000。INSERTOVERWRITETABLEUnm_Parti_TrailPARTITION(Department='A')SELECTemployeeid,firstname,designation,CASEWHENemployeeid=19THEN50000ELSEsalaryE

hadoop - 即使使用 Hadoop 自定义分区程序,不同的 key 也会进入 1 个文件

我的一期快用完了。我正在尝试从Reducer获取不同key的不同文件。分区器publicclasscustomPartitionerextendsPartitionerimplementsConfigurable{privateConfigurationconfiguration;@OverridepublicConfigurationgetConf(){returnconfiguration;}publicintgetPartition(Textkey,NullWritablevalue,intnumPartitions){returnMath.abs(key.hashCode())

apache-spark - Spark Streaming to Hive,每个分区的小文件太多

我有一个批处理间隔为2分钟(可配置)的Spark流作业。此作业从Kafka主题读取并创建数据集并在其上应用模式并将这些记录插入到Hive表中。Spark作业在Hive分区中每个批处理间隔创建一个文件,如下所示:dataset.coalesce(1).write().mode(SaveMode.Append).insertInto(targetEntityName);现在传入的数据不是那么大,如果我将批处理持续时间增加到10分钟左右,那么即使我最终也可能只获得2-3mb的数据,这远小于block大小。这是SparkStreaming中的预期行为。我正在寻找有效的方法来进行后处理以合并所有

apache-spark - HadoopPartitions 的 Spark 的默认分区是如何计算的?

我正在阅读JacekLaskowski'sonlinebookaboutApacheSpark,关于分区,他说Bydefault,apartitioniscreatedforeachHDFSpartition,whichbydefaultis64MB我对HDFS不是很熟悉,但是我在复制这个声明时遇到了一些问题。我有一个名为Reviews.csv的文件,它是大约330MB的亚马逊食品评论文本文件。给定默认的64MBblock,我希望ceiling(330/64)=6分区。但是,当我将文件加载到我的SparkShell中时,我得到了9个分区:scala>valtokenized_logs=