草庐IT

搞机分区

全部标签

hadoop - kafka分区和生产者关系

我有一个kafka集群,其中包含三个代理和一个主题,复制因子为三个和三个分区。我可以看到每个代理都有一份大小相同的所有分区的日志副本。这个主题有两个制作人。有一天,我将一位制作人的写作量减少了一半。然后我发现三个代理的入站流量都减少了,这是预期的,但只有分区1的领导节点的出流量减少了,我不明白。分区领导者的出站流量因复制而减少。但是每个broker都是一个partition的leader,为什么只有一个leader的出流量减少了呢?有没有可能生产者只写一个分区的内容?虽然我不这么认为。请帮我解释一下。集群现在运行良好,但我需要了解它以防出现潜在问题。 最佳答

hadoop - 在当前日期之前动态删除配置单元中的分区

在工作中,我们每天都会收到一个传输到Hive的新文件。该表按列“day”分区,其中包含数据传输到hive的时间,格式为“yyyy-MM-dd”。每当添加新文件时,我们都希望删除以前的分区,以便该表仅包含最新文件的数据。有没有办法编写HiveQL查询以动态删除当前日期之前的任何分区?我试过了:altertabletable_namedropifexistspartition(day但是我得到了这个错误:FAILED:ClassCastExceptionorg.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesccannotbecasttoo

hadoop - Hive 存档分区(动态)失败 : Execution Error, 从 org.apache.hadoop.hive.ql.exec.DDLTask 返回代码 1

我正在尝试从我的表中归档一些旧数据。使用ALTERTABLETABLE_NAMEARCHIVEPARTITION(part_col)查询。Hadoopversion-2.7.3Hiveversion-1.2.1表结构如下,hive>descclicks_fact;OKtimetimestampuser_idvarchar(32)advertiser_idintbuy_idintad_idintcreative_idintcreative_versionsmallintcreative_sizevarchar(10)site_idintpage_idintkeywordvarchar(4

hadoop - 从非分区表创建分区表

假设我在Hive中有内部orc非分区表:CREATETABLEIFNOTEXISTSnon_partitioned_table(idSTRING,companySTRING,citySTRING,countrySTRING,)STOREDASORC;是否可以通过类似cte的语句以某种方式创建parquet分区表?createpartitioned_tablePARTITIONON(dateSTRING)likenon_partitioned_table;altertablepartitioned_tableSETFILEFORMATPARQUET;此创建语句不起作用。所以基本上我需要添

python - 如果没有可用的指定分区路径,SPARK SQL 将失败

我在EMR中使用HiveMetastore。我可以通过HiveSQL手动查询表。但是当我在SparkJob中使用同一个表时,它说Inputpathdoesnotexist:s3://Causedby:org.apache.hadoop.mapred.InvalidInputException:Inputpathdoesnotexist:s3://....我已经在s3://..中删除了上面的分区路径,但它仍然可以在我的Hive中工作,而无需在表级别删除分区。但无论如何它在pyspark中不起作用这是我的完整代码frompysparkimportSparkContext,HiveConte

hadoop - 在配置单元的分区级别添加列

我是Hive的新手,我们需要将列添加到现有的Hive表中。我在以下命令的帮助下做到了这一点。altertabletableName添加列(colName数据类型)级联;但是在hive文档中,我们有alter命令来在分区级别添加列。我尝试了以下命令。hive>SEThive.exec.dynamic.partition=true;hive>altertabletest_alter_colpartition(c=1)addcolumns(d1int);FAILED:ExecutionError,returncode1fromorg.apache.hadoop.hive.ql.exec.DD

apache-spark - PySpark:如何在读取 Parquet 时读取分区列

我将数据存储在Parquet文件和按年、月、日分区的配置单元表中。因此,每个parquet文件都存储在/table_name/year/month/day/文件夹中。我只想读入部分分区的数据。我有如下各个分区的路径列表:paths_to_files=['hdfs://data/table_name/2018/10/29','hdfs://data/table_name/2018/10/30']然后尝试做类似的事情:df=sqlContext.read.format("parquet").load(paths_to_files)但是,我的数据不包含关于年月日的信息,因为这不是数据本身的一

hadoop - MapReduce 中的自定义动态分区

我正在使用MapReduce来处理我的数据。我需要将输出存储在日期分区下。我的排序键是日期字符串。现在,如果我在我的自定义分区程序类中覆盖getPartition以返回以下内容:return(formattedDate.hashCode()&Integer.MAX_VALUE)%numReduceTasks;因为我们使用哈希和Mod,在某些情况下我们返回相同的整数值例如:假设numReduceTasks=100现在日期2018-01-20的哈希值可能为101。所以101%100=1现在将其他日期设为2018-02-20,哈希值可能为201。因此201%100=1因此,我们最终将多个日期

hadoop - 如何在配置单元表中选择用于分区和分桶的列?

以下模式的分区和分桶的理想列是什么?是否有必要同时实现两者,还是一个就可以实现?user_idINTEGERUNSIGNED,product_idVARCHAR(20),genderENUM('M','F')defaultNULL,ageVARCHAR(6),occupationTINYINTUNSIGNEDdefaultNULL,city_categoryENUM('A','B','C','D','E')defaultNULL,stay_in_current_city_yearsVARCHAR(6),martial_statusTINYINTUNSIGNEDdefault0,prod

hadoop - 如何将一行插入带分区的配置单元表?

我想在tb_table中插入一行,但是hive好像不支持。我的数据库:insertintotb_testvalues('000','111')partition(day='20190404');异常(exception):FAILED:ParseExceptionline1:40missingEOFat'partition'near')' 最佳答案 插入语句应该是这样的,insertintotb_testpartition(day='20190404')values('000','111');分区列的顺序应与它们在表创建语句的PAR