草庐IT

平分分区

全部标签

hadoop - Hadoop 上的 MRJob 和 mapreduce 任务分区

我正在尝试使用PythonMRJob库执行mapreduce作业,但在将其正确分布到我的Hadoop集群时遇到了一些问题。我相信我只是缺少mapreduce的基本原则。我的集群是一个小型的,一主一从测试集群。基本思想是我只是请求一系列带有参数的网页,对它们进行一些分析并返回网页上的一些属性。我的map函数的输入只是一个带有如下参数的URL列表:http://guelph.backpage.com/automotive/?layout=bla&keyword=towinghttp://guelph.backpage.com/whatever/?p=blahhttp://semanticr

hadoop - map 输出分区的大小?

假设我们有3个映射器(m1、m2和m3)和2个缩减器(r1和r2)。每个reducer从每个mapper生成的文件中获取其输入分区。从作业历史中,我可以提取每个reduce任务的总输入,但我想知道每个映射器对该reducer输入的贡献?例如,reducerr1将收到一个INPUT_r1,例如:INPUT_r1=(从m1获取的分区)+(从m2获取的分区)+(从m3获取的分区)我想知道来自映射器的那些分区的大小? 最佳答案 为了从映射器中找到分区的大小,需要考虑几件事。首先,我们应该了解,在Hadoop中,分区器在组合器之前执行,因此如

hadoop - 已经分区的输入数据能否改进 hadoop 处理?

我知道在mapper和reducer之间的中间步骤中,hadoop会在数据到达reducer的途中对数据进行排序和分区。由于我在映射器的输入中处理已经分区的数据,有没有办法利用它并可能加速中间处理,从而不再进行排序或分组?添加一些细节:当我在S3上存储数据时,假设我的存储桶中只有两个文件。第一个文件将存储下半部分用户ID的记录,另一个文件将存储上半部分用户ID的值。每个文件中的数据不一定排序,但保证与用户有关的所有数据都位于同一个文件中。如:\mybucket\file1\mybucket\file2File1content:User1,ValueXUser3,ValueYUser1,

hadoop - HQL - 如何将几个分区中的数据从一个表复制/移动到另一个表

我有一个表(main_table),它被分区并存储记录的历史记录,并带有一个标志来指示记录是否被删除。我有另一个table9del_table),它与​​main_table具有相同的模式,但只存储一天的已删除记录(delete_falg='Y')。作为一个过程,我需要每天将del_table中可用的记录移动到main_table。我正在尝试编写一个LOADDATAINPATH命令,它可以将del_table的各个分区中的可用数据移动到main_table的相应分区,但我的尝试似乎都没有用。请让我知道是否可以通过使用LOADDATAINPATH命令来实现它,而无需指定单独的分区?我正在

hadoop - 是否可以向配置单元中现有的分区表添加新的列分区

我有一个名为employee_part的分区表。该表按hiredate分区。它具有如下所示的元数据当我尝试向employee_part表添加新的列分区时,我收到一条错误消息ALTERTABLEemployee_partADDPARTITION(gender='M')location'hdfs://user/hive/warehouse/maprpoc.db/employee_part/hiredate=1985-11-21';失败:SemanticException分区规范{gender=M}包含非分区列请澄清一下!提前致谢.. 最佳答案

hadoop - 现有表的 Hive 分桶和分区

是否可以为已经包含数据的表创建分桶和分区?我在hive中有一个表,其中包含超过100M的记录,我想在该表上创建一个分区。我还需要创建分桶。这可能吗?谢谢,巴拉 最佳答案 不,不可能在预加载的表中更改分桶和分区,您可能必须创建一个具有所需分桶和分区属性的新表,然后从旧表加载它。sethive.enforce.bucketing=true;FROMold_tableinsertintotablenew_bucketed_partitioned_tableselect*; 关于hadoop-现

java - 读取从 S3 分区的 Hive 到 Spark

在使用HiveEMR一段时间后,我正在迈出进入Spark的第一步。我想读取以下列格式保存到S3的Hive表:s3:////date=/fileNames我可以使用答案inthisquestion但后来我失去了数据行与date之间的连接,那是因为我没有在文件中保存日期。有没有一种简单的方法可以得到每行数据的文件名? 最佳答案 如果您只需要文件名中的日期,那么您不需要获取文件名,因为如果您正确创建表,spark和hive会自动为您完成。让我演示一下:#inhivehive>createtablet1(namestring)partiti

hadoop - 更改表分区设置位置后的 Hive 错误

我有一张表TEST,其中有一个分区Profession。执行后AlterTableTESTPARTITION(Profession='50')setlocation'hdfs:/apps/hive/warehouse1/TEST/Profession=50';命令执行无误;下一个查询因异常而失败:cannotfinddir=hdfs:/xxxxxxxx/apps/hive/wharehouse/TEST/Profession=50这是原来设置分区的目录。执行AlterTable将位置移回原始位置并不会修复信息。我的目标是随着时间的推移将旧分区从SSDhdfs卷移动到HDDhdfs卷。有

r - 使用 sparklyr 删除/更新分区

这个问题在这里已经有了答案:OverwriteonlysomepartitionsinapartitionedsparkDataset(3个答案)关闭4年前。我正在使用sparklyr的spark_write_table函数将表写入HDFS,使用partition_by参数定义如何存储它们:R>my_table%>%spark_write_table(.,path="mytable",mode="append",partition_by=c("col1","col2"))但是,现在我只想通过更改一个分区来更新表,而不是重新写入整个表。在Hadoop-SQL中我会做类似的事情:INSER

hadoop - 一条记录插入到hive分区表

我想向一个hive分区表中插入一条记录:表格描述如下:namestringNoneidstringNonework_donestringNone#PartitionInformation#col_namedata_typecommentwork_donestringNone该表包含几条记录,我想向表中追加一条新记录。下面是我写的插入记录的代码。insertintotablework_details_join_partpartition(work_done)select'sammy','sam002','Assignment'fromdual;写完上面的命令后出现错误:SemanticE