当前位置: 首页 > news >正文

网站外链建设:论坛签名是否还值得做/新东方教育培训机构官网

网站外链建设:论坛签名是否还值得做,新东方教育培训机构官网,互联网保险业务,驻马店专业做网站公司基于Tunnel SDK如何上传复杂类型数据到MaxCompute?首先介绍一下MaxCompute复杂数据类型: 复杂数据类型MaxCompute采用基于ODPS2.0的SQL引擎,丰富了对复杂数据类型类型的支持。MaxCompute支持ARRAY, MAP, STRUCT类型,并且可以任意嵌…

基于Tunnel SDK如何上传复杂类型数据到MaxCompute?首先介绍一下MaxCompute复杂数据类型:

复杂数据类型
MaxCompute采用基于ODPS2.0的SQL引擎,丰富了对复杂数据类型类型的支持。MaxCompute支持ARRAY, MAP, STRUCT类型,并且可以任意嵌套使用并提供了配套的内建函数。
如何使用Tunnel SDK上传/下载MaxCompute复杂类型数据
复杂类型构造与操作函数
如何使用Tunnel SDK上传/下载MaxCompute复杂类型数据
Tunnel SDK 介绍
Tunnel 是 ODPS 的数据通道,用户可以通过 Tunnel 向 ODPS 中上传或者下载数据。
TableTunnel 是访问 ODPS Tunnel 服务的入口类,仅支持表数据(非视图)的上传和下载。

对一张表或 partition 上传下载的过程,称为一个session。session 由一或多个到 Tunnel RESTful API 的 HTTP Request 组成。
session 用 session ID 来标识,session 的超时时间是24小时,如果大批量数据传输导致超过24小时,需要自行拆分成多个 session。
数据的上传和下载分别由 TableTunnel.UploadSession 和 TableTunnel.DownloadSession 这两个会话来负责。
TableTunnel 提供创建 UploadSession 对象和 DownloadSession 对象的方法.

典型表数据上传流程:
1) 创建 TableTunnel
2) 创建 UploadSession
3) 创建 RecordWriter,写入 Record
4)提交上传操作

典型表数据下载流程:
1) 创建 TableTunnel
2) 创建 DownloadSession
3) 创建 RecordReader,读取 Record
基于Tunnel SDK构造复杂类型数据
代码示例:

        RecordWriter recordWriter = uploadSession.openRecordWriter(0);ArrayRecord record = (ArrayRecord) uploadSession.newRecord();// prepare dataList arrayData = Arrays.asList(1, 2, 3);Map<String, Long> mapData = new HashMap<String, Long>();mapData.put("a", 1L);mapData.put("c", 2L);List<Object> structData = new ArrayList<Object>();structData.add("Lily");structData.add(18);// set data to recordrecord.setArray(0, arrayData);record.setMap(1, mapData);record.setStruct(2, new SimpleStruct((StructTypeInfo) schema.getColumn(2).getTypeInfo(),structData));// write the recordrecordWriter.write(record);

从MaxCompute下载复杂类型数据
代码示例:

        RecordReader recordReader = downloadSession.openRecordReader(0, 1);// read the recordArrayRecord record1 = (ArrayRecord)recordReader.read();// get array field dataList field0 = record1.getArray(0);List<Long> longField0 = record1.getArray(Long.class, 0);// get map field dataMap field1 = record1.getMap(1);Map<String, Long> typedField1 = record1.getMap(String.class, Long.class, 1);// get struct field dataStruct field2 = record1.getStruct(2);

运行实例
完整代码如下:

import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.aliyun.odps.Odps;
import com.aliyun.odps.PartitionSpec;
import com.aliyun.odps.TableSchema;
import com.aliyun.odps.account.Account;
import com.aliyun.odps.account.AliyunAccount;
import com.aliyun.odps.data.ArrayRecord;
import com.aliyun.odps.data.RecordReader;
import com.aliyun.odps.data.RecordWriter;
import com.aliyun.odps.data.SimpleStruct;
import com.aliyun.odps.data.Struct;
import com.aliyun.odps.tunnel.TableTunnel;
import com.aliyun.odps.tunnel.TableTunnel.UploadSession;
import com.aliyun.odps.tunnel.TableTunnel.DownloadSession;
import com.aliyun.odps.tunnel.TunnelException;
import com.aliyun.odps.type.StructTypeInfo;

public class TunnelComplexTypeSample {

private static String accessId = "<your access id>";
private static String accessKey = "<your access Key>";
private static String odpsUrl = "<your odps endpoint>";
private static String project = "<your project>";

private static String table = "<your table name>";

// partitions of a partitioned table, eg: "pt=\'1\',ds=\'2\'"
// if the table is not a partitioned table, do not need it
private static String partition = "<your partition spec>";

public static void main(String args[]) {
Account account = new AliyunAccount(accessId, accessKey);
Odps odps = new Odps(account);
odps.setEndpoint(odpsUrl);
odps.setDefaultProject(project);

try {TableTunnel tunnel = new TableTunnel(odps);PartitionSpec partitionSpec = new PartitionSpec(partition);// ---------- Upload Data ---------------// create upload session for table// the table schema is {"col0": ARRAY<BIGINT>, "col1": MAP<STRING, BIGINT>, "col2": STRUCT<name:STRING,age:BIGINT>}UploadSession uploadSession = tunnel.createUploadSession(project, table, partitionSpec);// get table schemaTableSchema schema = uploadSession.getSchema();// open record writerRecordWriter recordWriter = uploadSession.openRecordWriter(0);ArrayRecord record = (ArrayRecord) uploadSession.newRecord();// prepare dataList arrayData = Arrays.asList(1, 2, 3);Map<String, Long> mapData = new HashMap<String, Long>();mapData.put("a", 1L);mapData.put("c", 2L);List<Object> structData = new ArrayList<Object>();structData.add("Lily");structData.add(18);// set data to recordrecord.setArray(0, arrayData);record.setMap(1, mapData);record.setStruct(2, new SimpleStruct((StructTypeInfo) schema.getColumn(2).getTypeInfo(),structData));// write the recordrecordWriter.write(record);// close writerrecordWriter.close();// commit uploadSession, the upload finishuploadSession.commit(new Long[]{0L});System.out.println("upload success!");// ---------- Download Data ---------------// create download session for table// the table schema is {"col0": ARRAY<BIGINT>, "col1": MAP<STRING, BIGINT>, "col2": STRUCT<name:STRING,age:BIGINT>}DownloadSession downloadSession = tunnel.createDownloadSession(project, table, partitionSpec);schema = downloadSession.getSchema();// open record reader, read one record here for exampleRecordReader recordReader = downloadSession.openRecordReader(0, 1);// read the recordArrayRecord record1 = (ArrayRecord)recordReader.read();// get array field dataList field0 = record1.getArray(0);List<Long> longField0 = record1.getArray(Long.class, 0);// get map field dataMap field1 = record1.getMap(1);Map<String, Long> typedField1 = record1.getMap(String.class, Long.class, 1);// get struct field dataStruct field2 = record1.getStruct(2);System.out.println("download success!");
} catch (TunnelException e) {e.printStackTrace();
} catch (IOException e) {e.printStackTrace();
}

}
}

转载于:https://blog.51cto.com/14031893/2351308

http://www.jmfq.cn/news/4815361.html

相关文章:

  • 淘宝客为什么做网站/新版阿里指数官网
  • 百度商桥网站代码去哪里添加/长春seo外包
  • html做的网站怎么弄/百度网盘app下载安装
  • 建行网站/百度推广点击软件
  • 厦门php网站建设/买外链有用吗
  • 东乡做网站/中国新闻网最新消息
  • 怎么套模板 网站/北京全网推广
  • 免费b站在线观看人数在哪里/竞价托管哪家公司好
  • 商城型网站建设/简易的旅游网页制作
  • 深圳企业高端网站建设/武汉外包seo公司
  • 遵义企业网站建设/平台推广网站
  • 深圳市南山区做网站的小公司/中国企业培训网
  • 做网站的ebay网/最新注册域名查询
  • 网站域名有哪些/百度seo教程
  • 创意网名昵称大全/seo营销技巧培训班
  • 专业的论坛网站建设开发/方象科技专注于什么领域
  • 做PPT不错的网站有哪些/全国seo公司排名
  • 广州 企业网站建设/哪些网站可以发广告
  • 男人互做网站/黑科技推广软件
  • apache添加多个网站/公司品牌营销策划
  • 做网站公司哪家好/计算机编程培训学校哪家好
  • 影视cms哪个好/郑州网站优化外包顾问
  • 甘肃兰州网站建设/hs网站推广
  • 用java做网站可以/关键词优化排名用什么软件比较好
  • 沈阳网站建设优化企业/学校教育培训机构
  • 软文自助发稿软件开发 网站建设/百度推广系统营销平台
  • 做网站怎么导入地图/百度竞价广告怎么投放
  • 网站建设行业背景/谷歌推广平台
  • 公司只有一个设计师/优化网站排名解析推广
  • 网站建设seo运营规划/微信引流推广怎么找平台