草庐IT

分区Partition

全部标签

bash - 在特定作业上运行 SHell 脚本时如何从 HDFS 获取最新的有效分区日期?

我的任务是为特定的Spark作业实现所有分配的表。我需要根据要为分配给作业的所有表打印的时间戳和路径编写脚本。我需要获取与该作业关联的表关联的所有时间戳。这是我开发的脚本。#!/usr/bin/envbashJOB_NAME=${1}inputDirListings=$(awk-F:-vkey="$1"'$1==key{print$2}'test_paths.txt)fordirin$(echo$inputDirListings|tr",""\n");dopath=$direcho"diris$path"cmd2='hdfsdfs-du-h$path'ev1=`eval$cmd2|ta

sql - 从另一个表创建临时表,包括配置单元中的分区列

我正在使用AS子句从另一个表创建一个临时表,其中我将另一个表的分区列也包含在临时表中,然后出现以下错误。下面是表创建语句,其中col4是表xyz的分区列。并且在运行创建语句时出现以下错误。当我从create语句中删除col4时,它运行良好。错误:Errorwhilecompilingstatement:FAILED:NumberFormatExceptionForinputstring:"HIVE_DEFAULT_PARTITION"(state=42000,code=40000)请帮忙。示例:CREATETEMPORARYTABLEabcSTOREDASPARQUETASSELECT

apache-spark - 重新分区以避免大量小文件

目前我有一个ETL作业,它读取几个表,执行某些转换并将它们写回每日表。我在sparksql中使用以下查询“插入dbname.tablenamePARTITION(year_month)从Spark_temp_table中选择*插入所有这些记录的目标表按年X月级别分区。每天生成的记录并不多,因此我按年X月级别进行分区。但是,当我检查分区时,我的代码每天运行时它都有约50MB的小文件(代码必须每天运行),最终我的分区中将有大约30个文件,总计约1500MB我想知道是否有办法在我每天追加记录的同时在一个分区中创建一个(或者根据block大小限制可能创建2-3个文件)我认为我能做到的方法是从我

sql - Hive-我如何使用原始表中的分区 "create table as select.."?

我需要从我们的配置单元dlk创建一个“工作表”。虽然我可以使用:createtablemy_tableasselect*fromdlk.big_table很好,我在从原始“big_table”继承分区(属性day、month和year)或只是创建来自这些属性的新属性。搜索网络并没有真正帮助我回答这个问题-所有“教程”或解决方案都涉及createasselect或创建分区,而不是两者。这里有人可以帮忙吗? 最佳答案 不支持创建分区表作为选择。您可以分两步完成:像dlk.big_table一样创建表my_table;这将创建具有相同架构

hadoop - 将数据插入配置单元中的分区外部表时出错

我一直在尝试在配置单元外部表中实现动态分区。我在AzureDataLakegen2文件系统(支持HDFS)中有一些Parquet文件。我已按照以下步骤操作:创建一个临时外部表(路径:tempdata有parquet文件)createexternaltabletemp(astring,bstring,cdouble,ddouble)STOREDASPARQUETLOCATION'abfs://xyz@storage_account.dfs.core.windows.net/wheeler/tempdata';设置配置单元属性sethive.exec.dynamic.partition=t

hadoop - Hive:从现有分区表创建新表

我使用的是Amazon的ElasticMapReduce,我有一个基于存储在AmazonS3中的一系列日志文件创建的Hive表,并且像这样按天拆分到文件夹中:data/day=2011-09-01/log_file.tsvdata/day=2011-09-02/log_file.tsv我目前正在尝试创建一个额外的表来过滤掉这些日志文件中一些不需要的事件,但我不知道该怎么做并不断收到错误,例如:失败:语义分析错误:需要指定分区列,因为目标表已分区。如果我的初始表创建语句如下所示:CREATEEXTERNALTABLEIFNOTEXISTStable1(...fields...)PARTI

hadoop - 将普通列转换为配置单元中的分区列

我有一个包含3列的表格。现在我需要将其中一列修改为分区列。有没有可能?如果没有,我们如何向现有表添加分区。我使用了以下语法:创建表t1(enoint,enamestring)行格式分隔字段以'\t'结尾;将本地数据“/....路径/”加载到表t1中;改变表t1添加分区(p1='india');我收到错误.........有人知道如何向现有表添加分区......吗?提前致谢。 最佳答案 我不认为这是直接可能的。Hive将不得不完全重新排列和拆分HDFS中的文件,因为添加分区会强加一个新的目录结构。我建议您只需创建一个具有所需架构和分区

hadoop - 如何为 hadoop 流指定分区程序

我有一个如下所示的自定义分区器:importjava.util.*;importorg.apache.hadoop.mapreduce.*;publicstaticclassSignaturePartitionerextendsPartitioner{@OverridepublicintgetPartition(Textkey,Textvalue,intnumReduceTasks){return(key.toString().Split('')[0].hashCode()&Integer.MAX_VALUE)%numReduceTasks;}}我像下面这样设置hadoop流参数-fi

linux - Hadoop HDFS : DateNode directory on system partition?

我们用这种方式设置的Hadoop集群空间不足:1x1TBHDD/3个1.5TBHDD/data1/data2/data3系统分区几乎不用(97%空闲),不会用于与hadoop无关的任务。将系统分区作为HDFS数据目录添加到DataNode配置中是否安全?我担心Hadoop会填满分区并使系统无法使用。最好的方法可能是设置单独的lvm卷或重新分区磁盘。但我会避免走这条路。hadoop是否遵守unix配额?例如。如果我从系统分区添加一个目录并通过配额限制hadoop用户只能使用例如0.5TB会有帮助吗? 最佳答案 是的,Hadoop使用通

hadoop - 能否自定义 Hadoop 的 Shuffle/Sort(或分区)阶段来执行图形遍历?

我还在学习MapReduce框架,具体由Hadoop实现,我想知道是否可以修改它来执行以下任务:Map()函数将发出(key,value)对,其键是大小为2的数组,比如int[2]。我希望将包含两个共同整数中的任何一个的每一对映射到同一个reducer。例如,如果Map()发出:([2,3],4),([2,4],5),([6,5],2),([5,7],1),那么Reduce1应该接收前两对,Reduce2接收后两对(前两对共享2,后两对共享5)。这可以看作是一个连通分量问题,其中顶点是int[]中的整数,边在同一int[]中的任意两个整数之间共享。 最佳答案