草庐IT

搞机分区

全部标签

hadoop - 改变(EMPTY)表添加分区COLUMN

HDP-2.5.0.0使用Ambari2.4.0.1有几个SQLServer和Oracle数据库模式需要导入到HDFS/Hive。当前的方法运行良好:Sqoop以avro格式从RDBMS导入HDFS在avro文件之上创建一个Hive外部表,即。dataaggregate_avro_compressed根据步骤2创建最终表。将此步骤自动化将第2步中表中的数据插入到最终表中现在,第3步。表必须是ORC+COMPRESSED+PARTITIONED并且可能是MANAGED。手动,可以完成以下操作:CREATETABLE`dataaggregate_orc_empty`(......)PART

hadoop - 如何在类似于pyspark的java中将parquet文件写入分区?

我可以像这样将parquet文件写入pyspark中的分区:rdd.write.partitionBy("created_year","created_month").parquet("hdfs:///my_file")parquet文件自动分区为created_year,created_month。如何在java中做同样的事情?我在ParquetWriter类中看不到选项。还有其他类可以做到这一点吗?谢谢, 最佳答案 您必须将您的RDD转换为DataFrame,然后调用writeparquet函数。df=sql_context.c

hadoop - 使用路径中没有列名的分区创建 Hive 外部表?

我需要为一个只读的现有文件夹结构创建一个外部表。原来的hive表有年月日等分区。他们的文件以这种方式存储在路径HDFS_PATH/2016/10/04/但是当我在hive中创建一个外部表时,它总是存储到像HDFS_PATH/year=2016/month=10/day=04/这样的路径尽管我可以像在这个链接中那样更改1个分区位置HowtoUpdate/DropaHivePartition?,但我必须为每个分区组合设置位置。有没有更简单的方法一劳永逸地设置? 最佳答案 认为最好回答你的问题,因为其他答案没有解释。使用动态分区(不列出每

hadoop - 无法联系配置单元表分区,删除与分区相关的 hdfs 文件后

我的Hadoop集群在11:00对每个数据进行批处理。作业创建hive表分区(ex.p_date=201702,p_domain=0)并像ETL一样将rdbms数据导入到hive表分区....(hive表不是外部表)但是作业失败了,我删除了一些hdfs文件(分区位置=>p_date=20170228,p_domain=0)重新处理。这是我的错误,我只是在直线上键入查询删除分区...当我以这种方式查询“select*fromtable_namewherep_date=20170228,p_domain=0”时遇到挂起,但是“select*fromtable_namewherep_date

hadoop - 如果我们已经有一些数据,则更新分区的配置单元表

我有一个按天分区的配置单元表,与03-02-2017相关的数据已加载到其中,但第二天我有与03-03-2017相关的数据。现在如何用我的新数据更新Hive表,以便我的Hive仓库目录应该如下所示hive/warehouse/sample_database/sample_table/day=03-02-2017/data_part_0000hive/warehouse/sample_database/sample_table/day=03-03-2017/data_part_0000所以请提供创建表的代码以及添加新数据集时如何更新表。 最佳答案

hadoop - Spark 分区修剪在 1.6.0 上不起作用

我在hdfs上创建了分区的parquet文件并创建了HIVE外部表。当我在分区列上使用过滤器查询表时,spark检查所有分区文件而不是特定分区。我们使用的是spark1.6.0。数据框:df=hivecontext.createDataFrame([("class1","Economics","name1",None),("class2","Economics","name2",92),("class2","CS","name2",92),("class1","CS","name1",92)],["class","subject","name","marks"])创建Parquet分区

hadoop - 为什么预分区会因为减少洗牌而有利于 Spark 工作?

很多教程都提到RDD的pre-partition会优化sparkjobs的datashuffling。令我困惑的是,据我了解,预分区也会导致洗牌,为什么在这里提前洗牌会有利于某些操作?特别是sparkitself会针对一组转换做优化。例如:如果我想加入两个数据集国家(id,国家)和收入(id,(收入,月,年)),这两种操作有什么区别?(我使用PySpark架构)按id预分区country=country.partitionBy(10).persist()income=income.partitionBy(10).persist()income.join(country)不预分区直接加入

hadoop - 在 Hadoop 中获取输入文件的分区 ID

我需要知道我正在使用的输入文件分区的行索引。我可以通过将行索引连接到数据来在原始文件中强制执行此操作,但我宁愿在Hadoop中有一种方法来执行此操作。我的映射器中有这个...Stringid=context.getConfiguration().get("mapreduce.task.partition");但是“id”在任何情况下都是0。在“Hadoop:TheDefinitiveGuide”中,它提到访问分区ID等属性“可以从传递给Mapper或Reducer的所有方法的上下文对象中访问”。据我所知,它实际上并没有涉及如何访问这些信息。我浏览了Context对象的文档,似乎上面是执

hadoop - 基于子查询在配置单元表中添加分区

我正在尝试将分区添加到配置单元表(按日期分区)我的问题是需要从另一个表中获取日期。我的查询看起来像:ALTERTABLEmy_tableADDIFNOTEXISTSPARTITION(server_date=(SELECTmax(server_date)FROMprocessed_table));当我运行查询配置单元时抛出以下错误:错误:编译语句时出错:FAILED:ParseException行1:84无法识别常量(state=42000,code=40000)中'(''SELECT''max'附近的输入 最佳答案 Hive不允许

hadoop - Hive动态分区问题

我有如下2个表。CREATEEXTERNALTABLEIFNOTEXISTSTEMP_tab(idint,mytimeSTRING,ageint)ROWFORMATDELIMITEDFIELDSTERMINATEDBY','STOREDASTEXTFILELOCATION'hdfs://xxx';CREATETABLEIFNOTEXISTSmain_TAB(idint,ageint)PARTITIONEDBY(mytimeSTRING)STOREDASORCtblproperties("orc.compress"="ZLIB");FROMTEMP_TABINSERTOVERWRITET