草庐IT

平分分区

全部标签

scala - 使用 spark 覆盖配置单元分区

我正在使用AWS,并且我有使用Spark和Hive的工作流程。我的数据按日期分区,所以每天我的S3存储中都有一个新分区。我的问题是有一天加载数据失败,我必须重新执行该分区。接下来写的代码是:df//MydatainaDataframe.write.format(getFormat(target))//csvbydefault,butcouldbeparquet,ORC....mode(getSaveMode("overwrite"))//Appendbydefault,butinfutureitshouldbeOverwrite.partitionBy(partitionName)//

hadoop - Hive 动态分区

我正在尝试使用动态分区创建分区表,但我遇到了一个问题。我在HortonworksSandbox2.0上运行Hive0.12。sethive.exec.dynamic.partition=true;INSERTOVERWRITETABLEdemo_tabPARTITION(land)SELECTstadt,geograph_breite,id,t.countryFROMdemo_stgt;但是它不起作用..我遇到了错误。这是创建表demo_stg的查询:createtabledemo_stg(countrySTRING,stadtSTRING,geograph_breiteFLOAT,i

java - Hive 描述分区以显示分区 url

我知道有DESCRIBEFORMATTEDtable_name;显示表格格式。除了之外,有没有办法获得有关分区的更多信息?SHOWPARTITIONStable_name;我看到Hive语言手册有这个DESCRIBE[EXTENDED|FORMATTED][db_name.]table_namePARTITIONpartition_spec我想查看所有分区以及存储数据的hdfs或s3中的url。 最佳答案 显示分区:显示分区表名显示分区的物理存储位置:描述格式化的dbname.tablename分区(name=value)我不知道有

hadoop - 如何更改 Hive 分区列名

我必须更改分区列名称(不是分区规范),我在hivewiki和一些谷歌页面中查找命令。我可以找到更改分区规范的选项,即例如在/table/country='US'中,我可以将US更改为USA,但我想将country更改为continent。我觉得唯一可用于更改分区列名称的选项是删除并重新创建表。有没有其他可用的选项,请帮助我。提前致谢。 最佳答案 您可以通过以下方式更改元数据中的列名称:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#Languag

hadoop - 如何确定输入数据大小和集群资源所需的分区数?

我的用例如下所述。使用sparkContext.textFile(输入路径)从本地文件系统读取输入数据。在将输入数据(8000万条记录)提交给映射器/缩减器函数之前,使用RDD.coalesce(numberOfPARtitions)将其分成多个分区。如果不对输入数据使用coalesce()或repartition(),spark执行起来非常慢,并且会因内存不足异常而失败。我在这里面临的问题是决定要应用于输入数据的分区数。输入数据大小每次都不同,硬编码特定值不是一种选择。只有当某些最佳分区应用于我必须执行大量迭代(试错)的输入数据时,spark才会表现得非常好。这在生产环境中不是一个选

hadoop - 如何在 HIVE 表中找到最近的分区

我有一个分区表-有201个分区。我需要在此表中找到最新的分区并使用它来后期处理我的数据。查找所有分区列表的查询是:usedb;showpartitionstable_name;我需要一个查询来找到这些分区中的最新分区。分区格式ingest_date=2016-03-09我尝试使用max()却得到了错误的结果。我不想通过做遍历整个表selectmax(ingest_date)fromdb.table_name;这会给我预期的输出..但是扼杀了将分区放在第一位的全部意义。是否有更有效的查询来获取HIVe表的最新分区? 最佳答案 您可以使

hadoop - 使用 Hive、S3、EMR 和恢复分区加载数据

已解决:有关此问题的“解决方案”,请参阅下面的更新#2。~~~~~~~在s3中,我有一些log*.gz文件存储在嵌套目录结构中,例如:s3://($BUCKET)/y=2012/m=11/d=09/H=10/我正在尝试将这些加载到ElasticMapReduce(EMR)上的Hive,使用多级分区规范,例如:createexternaltablelogs(contentstring)partitionedby(ystring,mstring,dstring,hstring)location's3://($BUCKET)';表的创建工作。然后我尝试恢复所有现有分区:altertablel

hadoop - 使用单个分析命令计算所有分区的配置单元表统计信息的任何方法?

我在hive中看到的用于计算统计信息的语法似乎表明标题问题的答案是“否”:ANALYZETABLE[TABLENAME]PARTITION(parcol1=…,partcol2=….)COMPUTESTATISTICS但是,我想把它扔在这里,因为令人惊讶的是,总是需要编写一个脚本来遍历分区以生成每个分区的语句。我们现在在这个小表上有大约1000个分区,而且它会以数量级增长。顺便说一句,我在没有指定分区的情况下尝试了以下操作:hive>analyzetablemetricscomputestatistics;FAILED:SemanticException[Error10115]:Tab

scala - 如何为每个分区具有相同数量元素的大小相同的分区的 Spark RDD 定义自定义分区程序?

我是Spark的新手。我有一个很大的元素[RDD]数据集,我想将它分成两个大小完全相等的分区,以保持元素的顺序。我尝试使用RangePartitioner之类的vardata=partitionedFile.partitionBy(newRangePartitioner(2,partitionedFile))这不会给出令人满意的结果,因为它粗略地划分但不完全相等,以保持元素的顺序。例如如果有64个元素,我们使用Rangepartitioner,然后分为31个元素和33个元素。我需要一个分区器,这样我就可以在一半中准确地获得前32个元素,而另一半包含第二组32个元素。你能帮我建议一下如何

apache-spark - 将 Spark 数据帧保存为 Hive 中的动态分区表

我有一个示例应用程序,用于将csv文件读取到数据框中。可以使用以下方法将数据框以Parquet格式存储到Hive表中df.saveAsTable(tablename,mode)。上面的代码工作正常,但我每天都有太多数据,所以我想根据创建日期(表中的列)对配置单元表进行动态分区。有什么方法可以动态分区数据框并将其存储到配置单元仓库中。想要避免使用hivesqlcontext.sql(insertintotablepartittioinby(date)......)对插入语句进行硬编码。问题可以被认为是对:HowtosaveDataFramedirectlytoHive?的扩展非常感谢任何