精华内容
下载资源
问答
  • odps基础积累-创建表

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

    场景:
            基础知识积累与查询
    目的:
            纯粹基础知识积累,便于后续查询,由于互联网产品更新迭代非常快,记录的知识可能只适合当下一段时间,
            所以,官网www.aliyun.com有最新最权威文档.
    1.概念
           ODPS(Open Data Processing Service),是阿里云分析处理海量数据的产品.
           MaxCompute(原ODPS)是一项大数据计算服务,它能提供快速、完全托管的PB级数据仓库解决方案.
    2.建普通表

    create table `D_LOG_INFO`
    (
      `task_id`      BIGINT COMMENT '任务标识',
      `begin_time`   DATETIME COMMENT '记录任务开始时间',
      `end_time`     DATETIME COMMENT '记录任务结束时间',
      `flag`         STRING COMMENT '执行标志 0:失败、1:成功',
      `fail_info`    STRING COMMENT '记录任务失败信息',
      `data_count`   BIGINT COMMENT '记录数据条数',
      `table_name`   STRING COMMENT '本次任务操作表名'
    )
    COMMENT '任务日志信息'
    LIFECYCLE 100000;

    3.建立分区表

    create table `SENSOR_COLLECT_DATA`
    (
      `sensor_id`        BIGINT COMMENT '数据id实体唯一标识',    
      `data_type`      BIGINT COMMENT '数据类型(1:温度、2:湿度)',     
      `region`         STRING COMMENT '传感器安装区域',
      `s1`       DOUBLE COMMENT '传感器采集的值1',        
      `s2`       DOUBLE COMMENT '传感器采集的值2',       
      `s3`       DOUBLE COMMENT '传感器采集的值3',       
      `s4`       DOUBLE COMMENT '传感器采集的值4',       
      `s5`       DOUBLE COMMENT '传感器采集的值5',       
      `s6`       DOUBLE COMMENT '传感器采集的值6',       
      `s7`       DOUBLE COMMENT '传感器采集的值7',       
      `s8`       DOUBLE COMMENT '传感器采集的值8',       
      `s9`       DOUBLE COMMENT '传感器采集的值9',       
      `s10`      DOUBLE COMMENT '传感器采集的值10',       
      `s11`      DOUBLE COMMENT '传感器采集的值11',       
      `s12`      DOUBLE COMMENT '传感器采集的值12'
    )
    COMMENT '传感器采集数据'
    PARTITIONED BY (
    	data_date STRING COMMENT '数据日期'
    )
    LIFECYCLE 100000;

    以上,感谢.

    展开全文
  • 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);
    	}



    展开全文
  • 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下的表分区解释

    千次阅读 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...的文件夹,这些文件夹里面存的是一条一条的数据,只不过数据都是基于时间和地域纬度的。想清楚了,就是一层窗户纸的事情。
    _

    展开全文
  • 摘要: 大数据计算服务(MaxCompute,原名 ODPS,https://www.aliyun.com/product/odps)是一种快速、完全托管的 GB/TB/PB 级数据仓库解决方案。MaxCompute 向用户提供了完善的数据导入方案以及多种经典的分布式...
  • --创建分区表 CREATE TABLE T_NOPARTITIONTAB( ID INT, NAME VARCHAR(20)); --插入测试数据 begin for i in 1..1000 loop insert into t_nopartitiontab(id, name) values(i, DBMS_RANDOM.RANDOM_STRING('U',5...
  • MaxCompute分区表和非分区表使用对比

    千次阅读 2017-07-06 11:04:51
    摘要: 本文我们将通过对有同样数据量、表结构除分区列其他都一模一样的表,从查询计算、写入、删除数据几个简单操作进行对比,了解MaxCompute分区表和非分区表在使用上有什么差异。 在介绍之前,需要大家先了解...
  • 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
  • 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 ...
  • PyODPS 中使用 Python UDF

    2021-03-04 09:14:48
    from odps import ODPS o = ODPS('your-access-id', 'your-access-key', 'your-project') MaxCompute SQL 中使用 Python UDF 首先,我们需要写一个 Python 文件,假设我们就是把某一列按 csv 格式放的一列转成 json...
  • ODPS 新增字段

    千次阅读 2020-10-14 17:24:01
    ODPS 新增字段 alter table tableName add columns(fiedldName string) ;
  • 设置动态分区 SET hive.exec.dynamic.partition=TRUE; 设置非严格模式,每条sql执行前都要加 set hive.exec.dynamic.partition.mode=nonstrict; 单分区 动态分区导入数据 create table partition_test (id int,...
  • ODPS DDL

    2014-11-10 16:22:16
    ODPS DDL其实很简单主要是对表和分区的DDL,和oracle和mysql的语法非常相似 ,另外也综合了hive的一些特点 CREATE TABLE 语法: CREATE TABLE [IF...
  • 初学大数据Maxcompute时部分用户不是很熟悉Maxcompute分区表的概念和使用,那这篇文章来简单介绍下分区表的概念及使用场景。 实际上,分区在很多框架中都有这个概念,比如开源框架中的hive等。打个比喻,某城市粮仓...
  • 使用 python 统计 ODPS 空间内的和数据情况。
  • 阿里云ODPS常用命令总结

    千次阅读 2019-03-22 14:43:56
    不同于非分区表分区表的最后一个分区被回收后,该表不会被删除。 生命周期只能设定到表级别,不能在分区级设置生命周期。 [LIFECYCLE days] //[LIFECYCLE days] days参数为生命周期时间,只接受正整数。单位:...
  • 增量同步ODPS数据解决方法

    千次阅读 2017-04-12 10:50:45
    如果用户有增量同步的需求,可以考虑以下方案:1、如果用户的数据是不更新只累加的数据,比如日志数据,可以在分析型数据库里创建表的时候设置二级分区。每次增量的数据导入到分析型数据库的一个二级分区里。2、用户...
  • Odps使用笔记

    2019-10-11 15:23:27
    1.下载及使用客户端 2.创建语句 3.关于分区查询 ...4.动态分区(源到目标的数据导入,分区相同且目标有新增的字段) 5.列转行 6.给设置生命周期 7.关于各种时间字段的正则过滤和大小比较 8. ...
  • odps_cmd 用户和权限管理------------- 向项目空间中添加用户:add user username;... 查看用户:list users;... 授限:向user_name授予名为user_project_name的project的createTable创建表权限 g...
  • odps指定sql下载:1.sqlTask号称不支持超过10000行,能否通过多次执行task、每次task限定分页条件实现获取全部数据;2.官方推荐的sqlTask+tableTunnel方案 ...
  • 本教程主要演示以存储在oss中的csv格式文件作为数据源,创建maxcompute的外部。 操作教程 1、csv文件示例,下载示例解压并上传到oss。注意如果是自己创建文件,务必使用utf-8编码格式文件。 2、创建外部表语句 --...
  • 但是观察sql执行情况,查询sql的where条件中虽然有create_time,但是却是全扫描所有分区,性能甚至低于分区之前  分区情况如下:    sql文本和执行计划如下:    对应的java代码如下,其中使用了timestamp...
  • pyodps操作maxCompute

    2021-02-09 21:14:48
    连接ODPSfrom odps import ODPSodps = ODPS('**your-access-id**', '**your-secret-access-key**', '**your-default-project**',endpoint='**your-end-point**')your-default-project**',endpoint='**your-end-point...
  • ODPS最新SQL参考手册ODPSSQL 参考手册ODPS SQL 参考手册修改记录修改日期 修改说明 作者2012/9/8 初始版本 张云远2012...
  • ODPS

    2017-04-23 21:13:00
    ODPS 功能之概述篇 原文 http://blog.aliyun.com/2962 主题 SQL 概述 ODPS是阿里云基于自有的云计算技术研发一套开放数据处理服务(Open Data Processing Service,简称 ODPS),具有TB/PB级数据计算...
  • ODPS简介

    万次阅读 2015-08-24 16:21:46
    初识ODPS ODPS是分布式的海量数据处理平台,提供了丰富的数据处理功能和灵活的编程框架,主要的功能组件有如下几个。 Tunnel服务:数据进出ODPS的唯一通道,提供高并发、高吞吐量的数据上传和下载服务。SQL:基于...
  • 在使用ODPS强大的数据处理能力之前,大家最关心的是自己的数据如何导入到ODPS中。 下面介绍一款向ODPS导入数据的工具-Fluentd。 Fluentd是一个开源的软件,用来收集各种源头日志(包括Application Log、Sys Log及...

空空如也

空空如也

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

odps创建分区表