精华内容
下载资源
问答
  • ODPS(MaxComputer)清空分区表的数据

    千次阅读 2020-07-06 19:50:28
    insert overwrite table test_500w partition(f1='20200702',f2='20:00') select `(f1|f2)?+.+` from test_500w where 1=2; ...其中f1,f2为分区字段名,子查询的含义是查询分区字段之外的其他字段
    insert overwrite table test_500w partition(f1='20200702',f2='20:00')
      select `(f1|f2)?+.+` from test_500w where 1=2;

     

    其中f1,f2为分区字段名,子查询的含义是查询分区字段之外的其他字段

     

    直接删除分区

    alter table 表A drop if EXISTS PARTITION(分区名='123')
    展开全文
  • odps下的表分区解释

    千次阅读 2017-03-15 10:05:28
    分区字段一般来说都是重复性非常强的字段,比如说时间,某一天可能会产生几万条数据,把这一天产生的数据就存入到一个分区中,而时间(某天)就是分区字段,时间(某天)所在的列...在odps中最多支持六级分区。也就...

    分区字段一般来说都是重复性非常强的字段,比如说时间,某一天可能会产生几万条数据,把这一天产生的数据就存入到一个分区中,而时间(某天)就是分区字段,时间(某天)所在的列就是分区列。也就是说,基于分区列的数据作为一个纬度,进行了数据块的划分存储,加快查询速度。每一个分区块里面的数据是完整性的,而不是分区列里的一列或者几列数据。在odps中最多支持六级分区。也就是说partition by里面可以有六个字段可以设置为分区列,而且是有顺序的。比如说有两个分区列,sale_date和region , 那么这个表可能存在多少个分区呢?可能无数个,分区分为几级呢,两级。第一级为销售时间,第二级为区域。
    Create table sale_detail(shop_name string, customer_id string , total_price decimal) partition by(sale_date string, region string);
    Alter table sale_detail add partition (sale_date = ‘201703’, region=’hangzhou’);
    其实可以理解更加简单一些,就是有个叫sale_detail的文件夹,下面存了一堆201703,201704...的文件夹,201703这个文件夹下面又存了一堆hangzhou、beijing、qingdao...的文件夹,这些文件夹里面存的是一条一条的数据,只不过数据都是基于时间和地域纬度的。想清楚了,就是一层窗户纸的事情。
    _

    展开全文
  • insert into table p_user partition(p1='2016',p2='0920')select * from user ; 注意:p_user和user的字段一样多。其中p1和p2表示分区的属性。 ...

    insert into table p_user partition(p1='2016',p2='0920') select * from user ;
    注意:p_user和user的字段一样多。其中p1和p2表示分区的属性。

    转载于:https://my.oschina.net/u/2007900/blog/749468

    展开全文
  • ODPS】阿里云ODPS中带分区操作

    万次阅读 2015-08-13 15:00:52
    1.创建分区表分区表有自己的分区列,而分区表则没有。 public static void createTableWithPartition(Odps odps, String createTableName) throws Exception { Tables tables = odps.tables();// /获取表示...

    1.创建分区表:

    分区表有自己的分区列,而分区表则没有。

    public static void createTableWithPartition(Odps odps, String createTableName)
    			throws Exception {
    		Tables tables = odps.tables();// /获取表示ODPS所有Table的集合对象
    		boolean a = tables.exists(createTableName);// 判断指定表test_table_jyl是否存在
    		if (a) {
    			System.out.println("指定表存在");
    			Table table = tables.get(createTableName);
    			tables.delete(createTableName);//存在就删除
    		} else {
    			System.out.println("指定表不存在");
    		}
    		System.out.println("-------------------------------------------------");
    		
    		/* 创建表 */
    		if (tables.exists(createTableName)) {
    			System.out.println("指定表存在,无法创建");
    		} else {
    			System.out.println("指定表不存在,可以创建");
    			/* TableSchema表示ODPS中表的定义 */
    			TableSchema tableSchema = new TableSchema();
    			/* 添加列 */
    			Column col; // Column表示ODPS中表的列定义
    			col = new Column("id", OdpsType.STRING, "ID");
    			tableSchema.addColumn(col);
    			col = new Column("name", OdpsType.STRING, "姓名");
    			tableSchema.addColumn(col);
    			col = new Column("sex", OdpsType.BIGINT, "性别");
    			tableSchema.addColumn(col);
    			col = new Column("birthday", OdpsType.DATETIME, "生日");
    			tableSchema.addColumn(col);
    
    			/* 添加分区列 */
    			col = new Column("province ", OdpsType.STRING, "省(分区列)");
    			tableSchema.addPartitionColumn(col);
    			
    			tables.create(createTableName, tableSchema);//创建表
    			System.out.println("表【" + createTableName + "】创建成功");
    		}
    		System.out.println("-------------------------------------------------");
    
    	}


    2.分区表数据上传:

    分区表上传数据必须指定分区,所以上传数据前必须保证存在分区,不存在就创建一个,创建分区有两种方法

    /*PartitionSpec类表示一个特定分区的定义*/
    		String partitionColumn="province";//表中的分区列
    		/*第一种,直接调用带参构造函数,
    		 * 参数格式:分区定义字符串,比如: pt='1',ds='2'
    		 */
    		PartitionSpec partitionSpec1 = new PartitionSpec(partitionColumn+"='hubei'");
    		
    		/*第二种,调用布带参数构造函数,再调用队形set方法。
    		 */
    		PartitionSpec partitionSpec2 = new PartitionSpec();
    		partitionSpec2.set(partitionColumn, "hubei");


    TableTunnel类中有两个创建创建上传会话方法:

    createUploadSession

    public TableTunnel.UploadSession createUploadSession(String projectName,
                                                         String tableName)
                                                  throws TunnelException
    在非分区表上创建上传会话

    Parameters:
    projectName  - Project名称
    tableName  - 表名,非视图
    Returns:
    TableTunnel.UploadSession
    Throws:
    TunnelException

    createUploadSession

    public TableTunnel.UploadSession createUploadSession(String projectName,
                                                         String tableName,
                                                         PartitionSpec partitionSpec)
                                                  throws TunnelException
    在分区表上创建上传会话

    注: 分区必须为最末级分区,如表有两级分区pt,ds, 则必须全部指定值, 不支持只指定其中一个值

    Parameters:
    projectName  - Project名
    tableName  - 表名,非视图
    partitionSpec  - 指定分区   PartitionSpec
    Returns:
    TableTunnel.UploadSession
    Throws:
    TunnelException


    分区表必须使用带分区的构造方法,还必须保证该分区存在,否则会报异常。

    public static void uploadDataToYun(Odps odps, String project, String tableName)
    			throws Exception {
    		TableTunnel tunnel = new TableTunnel(odps);
    		tunnel.setEndpoint(TUNNEL_URL);// 设置TunnelServer地址,没有设置TunnelServer地址的情况下自动选择
    		
    		/*PartitionSpec类表示一个特定分区的定义*/
    		String partitionColumn="province";//表中的分区列
    		PartitionSpec partitionSpec = new PartitionSpec();
    		partitionSpec.set(partitionColumn, "hubei");
    		
    		Table table = odps.tables().get(tableName);//获取当前表
    		boolean a= table.hasPartition(partitionSpec);//判断上述定义分区在表中是否存在
    		if(a){
    			System.out.println("分区已经存在,可以直接上传数据");
    		}else{
    			System.out.println("分区不存在,先创建分区再上传数据");
    			table.createPartition(partitionSpec);
    		}
    		
    		/*在分区表上创建上传会话*/
    		TableTunnel.UploadSession uploadSession = tunnel.createUploadSession(
    				project, tableName,partitionSpec);
    
    		RecordWriter rw = uploadSession.openRecordWriter(1);
    		Column[] columns = new Column[4];
    		columns[0] = new Column("id", OdpsType.STRING);
    		columns[1] = new Column("name", OdpsType.STRING);
    		columns[2] = new Column("sex", OdpsType.BIGINT);
    		columns[3] = new Column("birthday", OdpsType.DATETIME);
    		Record r = new ArrayRecord(columns);
    		
    		r.setString("id", "3");
    		r.setString("name", "name3");
        	r.setBigint("sex", (long) 2);
        	Date date = new Date();
        	r.setDatetime("birthday", date);
        	rw.write(r);
        	rw.close();//一定要close,不然无法commit
    
    		Long[] blocks = uploadSession.getBlockList();
    		uploadSession.commit(blocks);
    		System.out.println("数据上传成功");
    	}


    3.测试类:

    	private static final String ACCESS_ID = "***********";
    	private static final String ACCESS_KEY = "***************";
    	private static final String PROJECT_NAME = "*************";
    	private static final String TUNNEL_URL = "http://dt.odps.aliyun.com";
    	private static final String ODPS_URL = "http://service.odps.aliyun.com/api";
    	
    	public static void main(String args[]) throws Exception {
    
    		/* 先构建阿里云帐号 */
    		Account account = new AliyunAccount(ACCESS_ID, ACCESS_KEY);
    		
    		/* Odps类是ODPS SDK的入口 */
    		Odps odps = new Odps(account);
    		odps.setDefaultProject(PROJECT_NAME);// 指定默认使用的Project名称
    		odps.setEndpoint(ODPS_URL);// 设置ODPS服务的地址
    		
    		String tableName="test_table_jyl";
    		/*创建带分区的表*/
    		createTableWithPartition(odps,tableName);
    		
    		/*上传数据*/
    		uploadDataToYun(odps, PROJECT_NAME, tableName);
    	}



    展开全文
  • 需要或取当前分区表最大的分区。这里使用的是利用元数据方式进行获得当前分区表最大分区的方式 写一个工具shell 脚本 #!/bin/bash TABLE_NAME=$1 set -e v_date=date -d yesterday +"%Y-%m-%d" if [ -z ${...
  • insert intotable test_xx PARTITION (pt = '20201108') SELECT request_id , request_info_id , request_code , request_name , phase_code , status_code , business_group FROM SRM_BI_dev.srm_fnd_...
  • MaxCompute分区表和非分区表使用对比

    千次阅读 2017-07-06 11:04:51
    摘要: 本文我们将通过对有同样数据量、表结构除分区列其他都一模一样的表,从查询计算、写入、删除数据几个简单操作进行对比,了解MaxCompute分区表和非分区表在使用上有什么差异。 在介绍之前,需要大家先了解...
  • 摘要: 大数据计算服务(MaxCompute,原名 ODPS,https://www.aliyun.com/product/odps)是一种快速、完全托管的 GB/TB/PB 级数据仓库解决方案。MaxCompute 向用户提供了完善的数据导入方案以及多种经典的分布式...
  • ODPS 新增字段

    千次阅读 2020-10-14 17:24:01
    ODPS 新增字段 alter table tableName add columns(fiedldName string) ;
  • odps基础积累-创建

    千次阅读 2019-09-07 12:02:07
    场景: 基础知识积累与查询 目的: 纯粹基础知识积累,便于后续查询,由于互联网产品更新迭代非常快,记录的知识可能只适合当下一... ODPS(Open Data Processing Service),是阿里云分析处理海量数据的产品. MaxComput...
  • 阿里云odps循环删除分区

    千次阅读 2019-07-01 22:45:40
    阿里云环境下,循环删除分区操作,通过pyodps实现: 我的分区字段是dt,类型是bigint t = o.get_table('tmp_activity_push') for a in range(20190501,20190530): date = 'dt =' + str(a) print(date) t....
  • DataX使用指南——ODPS to ODPS

    千次阅读 2017-02-27 14:23:25
    DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括 MySQL、Oracle、SqlServer、Postgre、HDFS、Hive、ADS、HBase、OTS、ODPS 等各种异构数据源之间高效的数据同步功能。 DataX本身作为数据同步...
  • Datax实现odps和mysql之间数据传输

    千次阅读 2020-04-08 15:47:14
    一、 mysql的数据加载到odps中 { “job”: { “setting”: { “speed”: {“byte”: 1048576} }, “content”: [ { “reader”: { “name”: “mysqlreader”, “parameter”: { “column”: [ “id”, “name”...
  • 阿里云odps基本语法

    千次阅读 2019-05-29 15:31:32
    odps sql:与hive sql语法基本一致odpscmd.batSQL语句不分大小写,使用“–”进行注释,使用分号作为语句结束...在ODPS中使用的主要是DDL跟DML查看空间:1:show tables; 2:ls tables;3:list tables;查看:des...
  • MaxCompute 往分区表插入数据

    千次阅读 2018-07-25 10:02:53
    一、创建分区表user CREATE TABLE user ( user_id BIGINT, gender BIGINT COMMENT '0 unknow,1 male, 2 Female', age BIGINT) PARTITIONED BY (region string, dt string); 二、添加分区 ALTER TABLE user ...
  • 2. 编写ReadDDL类,用于连接ODPS,读取对应的结构 package com.op.ddlutil; import com.aliyun.odps.*; import com.aliyun.odps.account.Account; import com.aliyun.odps.account.AliyunAccount; import ...
  • ODPS insert overwrite/into

    2014-11-10 16:33:07
    insert into 是向分区中追加数据,而insert overwrite则先清空或者分区,然后再插入数据 来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26613085/viewspace-1327424/,如需转载,请注明出处...
  • odps命令

    万次阅读 2017-02-08 14:43:10
    数据传输: tunnel download test_project.test_table/p1=”...查看所有:list tables; 查看表字段: desc tableName; 删除: drop table if exists tableName; 复制结构: create table if not exists table_n
  • 读取odps表数据

    千次阅读 2019-07-12 10:03:42
    前言 这是我第一次写博客,在工作的这一段时间,几乎每天都会学到新的东西...由于需要从odps表中读取数据,所以我一开始使用的是spark自带DataSource的API方式进行数据读取,具体代码如下: val df = spark .read ...
  • 目前Tunnel仅支持(不包括视图View)数据的上传下载。 主要接口 描述 TableTunnel 访问ODPS Tunnel服务的入口类。用户可以通过公网或者阿里云内网环境对ODPS 及其Tunnel进行访问。当...
  • (1)分区和分桶都是细化数据管理,但是分区表是手动添加区分,由于hive是读模式,所以对添加进分区的数据不做模式校验。分桶表的数据时按住某些分桶字段进行hash散列 相乘的多个文件,所以数据的准确性高很多 (2...
  • ODPS通过SQL删除数据的方法

    千次阅读 2017-03-03 15:17:00
    对于非分区表 通过“TRUNCATE TABLE table_name;”语句清空表数据,也可以用覆盖写的功能实现类似的功能。 如要删除TableA表里的Col=1的数据,使用如下命令即可 INSERT OVERWRITE TABLE TableA SELECT ...
  • 指定分区表分区进行查询

    千次阅读 2017-09-13 15:22:47
    select * from TBL_OPR_20_PERFORM_CNT partition(P201705);
  • 假如现在hive有个分区表A,分区字段为inc_day 需求是:需要将A表中的数据全部插入到分区表B中 具体步骤如下: 1.create B like A; 2.插入数据 set hive.exec.dynamic.partition=true; set hive.exec.dynamic....
  • 该工具可以自动获取源和目标的属性及分区信息,自动生成源所有分区的json文件,并生成批量串行脚本和批量检测脚本。方便大家的数据迁移。 注:具体脚本详见附件 datax_tools 内。 ( 2 )操作过程 l Â...
  • 使用 python 统计 ODPS 空间内的和数据情况。
  • 1.修改的属性,内部和外部; ALTER TABLE tablename SET TBLPROPERTIES ('EXTERNAL'='TRUE');   2.修改的字段注释; ...alter table tablename change column filedname `...3.删除分区 alter table tab...
  • 今天对一张创建了分区表的表进行update操作,正好需要修改的是创建分区的那一列,由于是要修改在分区表范围内的数据,所以无法修改。 然后搜了一下,需要修改row movement这个属性:alter table eq_excpdetail ...
  • 删除分区表里某个分区的数据

    千次阅读 2019-05-31 11:38:00
    例如删除zabbix中 history18年11月份的分区数据。 mysql> alter table history truncate partition p201811050000; Query OK, 0 rows affected (0.26 sec)   转载于:...
  • 在创建完分区表后,可以向分区表中直接插入数据,而不用去管它这些数据放在哪个物理上的数据表中。接上篇文章,我们在创建好的分区表中插入几条数据:    从以上代码中可以看出,我们一共在数据表中插入了13...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,345
精华内容 538
关键字:

odps分区表