草庐IT

平分分区

全部标签

hadoop - 关于 reducer 的数据分区

Hadoop权威指南(TomWhite)第178页Sectionshuffleandsort:map端。就在图6-4之后在写入磁盘之前,线程首先将数据分成与数据最终将发送到的reducer相对应的分区。在每个分区中,后台线程按键执行内存中排序,如果有组合器函数,它会在排序的输出上运行。问题:这是否意味着映射将每个键输出写入不同的文件,然后再将它们组合起来。因此,如果有2个不同的key输出要发送到reducer,每个不同的key将分别发送到reducer,而不是发送单个文件。如果我的上述推理不正确,那么实际发生的是什么。 最佳答案 仅

hadoop - Spark 不利用 parquet 的 hdfs 分区

我正在使用以下命令将parquet文件写入hdfs:df.write.mode(SaveMode.Append).partitionBy(id).parquet(path)之后我正在读取和过滤这样的文件:valfile=sqlContext.read.parquet(folder)valdata=file.map(r=>Row(r.getInt(4).toString,r.getString(0),r.getInt(1),r.getLong(2),r.getString(3)))valfilteredData=data.filter(x=>x.thingId.equals("1"))f

apache-spark - Spark Dataframe 丢失分区

我在读取spark数据帧时发现了这个奇怪的问题。我将数据框重新分区为50k个分区。但是,当我读取数据帧并对其执行计数操作时,我发现当我使用spark2.0时,底层的rdd只有2143个分区。于是我去了我保存重新分区数据的路径,发现hfs-ls/repartitionedData/|wc-l50476因此它在保存数据时创建了50k个分区。但是对于spark2.0,vald=spark.read.parquet("repartitionedData")d.rdd.getNumPartitionsres4:Int=2143但是对于spark1.5,vald=spark.read.parque

hadoop - Hive按日期分区,为什么要用string类型?为什么不是int?

如果我在Hive中定义一个表,并且将根据日期进行分区,并且我的日期格式为YYYYMMDD,我应该选择哪种类型,int或string?如果它只是一个字段,因此在我为表提供的文件中,我可以看到使用了一个字符串,即使只是这样我可以搜索和识别可能进入我的格式错误的条目数据。但由于我将指定分区作为加载过程的一部分,我知道我将始终拥有正确格式的值。在Where子句中使用时,分区字段通常是相等或小于/大于逻辑。 最佳答案 在Hive中,日期通常被视为字符串。如果您查看所有可用的日期操作UDF,它们使用字符串类型,因此如果您使用整数,则每次都必须转

Hadoop分区器

我想问一下Hadooppartitioner,它是在Mappers中实现的吗?。如何衡量使用默认哈希分区器的性能-是否有更好的分区器来减少数据倾斜?谢谢 最佳答案 Partitioner不在Mapper中。下面是每个Mapper中发生的过程-每个映射任务将其输出写入循环缓冲存储器(而不是磁盘)。当缓冲区达到阈值时,后台线程开始将内容溢出到磁盘。[缓冲区大小由mapreduce.task.io.sort.mb属性控制,默认为100MB,溢出由mapreduce.io.sort.spill.percent属性控制,默认为0.08或80%

hadoop - 如果没有,如何处理 Spark RDD 分区。执行者 < 没有。 RDD分区

我想了解SparkStreaming中的一个基本知识。我有50个Kafka主题分区和5个执行程序,我使用的是DirectAPI,所以没有。RDD分区的数量将为50。如何在5个执行程序上处理该分区?将在每个执行器上一次启动1个分区,或者如果执行器有足够的内存和内核,它将在每个执行器上并行处理超过1个分区。 最佳答案 Willsparkprocess1partitionatatimeoneachexecutorsoriftheexecutorhasenoughmemoryandcoresitwillprocessmorethan1par

hadoop - 从分区文件结构创建 Impala 外部表

提供了如下的分区fs结构:logs└──log_type└──2013├──07│  ├──28│  │  ├──host1│  │  │  └──log_file_1.csv│  │  └──host2│  │  ├──log_file_1.csv│  │  └──log_file_2.csv│  └──29│  ├──host1│  │  └──log_file_1.csv│  └──host2│  └──log_file_1.csv└──08我一直在尝试在Impala中创建一个外部表:createexternaltablelog_type(field1string,field2s

hadoop - 从 Hive 中的选择查询中排除分区字段

假设我在Hive中有一个表定义如下(实际表有大约65列):CREATEEXTERNALTABLES.TEST(COL1STRING,COL2STRING)PARTITIONEDBY(extract_dateSTRING)ROWFORMATDELIMITEDFIELDSTERMINATEDBY'\007'LOCATION'xxx';创建表后,当我运行hive-e"describes.test"时,我看到extract_date是表中的列之一。执行select*froms.test也会返回extract_date列值。在Hive中运行选择查询时是否可以排除此虚拟(?)列。

hadoop - 在 alter exchange 分区中期望 KW_EXCHANGE 接近 'table'

我正在处理配置单元中的一个表,该表没有分区,输入格式为textinputformat。这不是外部表,我使用“Createtableasselect”模板创建它。我使用altertable语句重命名表,如下所示:ALTERTABLEtestdb.temptableRENAMETOtestdb.newtable;我收到以下错误:Error:Errorwhilecompilingstatement:FAILED:ParseExceptionline1:32mismatchedinput'RENAME'expectingKW_EXCHANGEnear'temptable'inalterexch

hadoop - 数据未加载到 Hive 中的分区表中

我正在尝试为我的表创建分区以更新值。这是我的示例数据1,Anne,Admin,50000,A2,Gokul,Admin,50000,B3,Janet,Sales,60000,A我想将Janet的部门更新为B。为此,我创建了一个以部门作为分区的表。createexternaltabletrail(EmployeeIDInt,FirstNameString,DesignationString,SalaryInt)PARTITIONEDBY(DepartmentString)rowformatdelimitedfieldsterminatedby","location'/user/sreev