开发者社区 > 大数据与机器学习 > 大数据开发治理DataWorks > 正文

请问datahub写入maxcompute的表支持 map和array类型吗?

请问datahub写入maxcompute的表支持 map和array类型吗?

展开
收起
游客6vdkhpqtie2h2 2022-09-01 10:14:21 823 0
1 条回答
写回答
取消 提交回答
  • CSDN全栈领域优质创作者,万粉博主;InfoQ签约博主;华为云享专家;华为Iot专家;亚马逊人工智能自动驾驶(大众组)吉尼斯世界纪录获得者

    是的,DataHub可以写入MaxCompute中的表,并支持Map和Array类型。您可以使用DataHub提供的API将数据写入MaxCompute表中,这些API支持各种数据类型,包括Map和Array。例如,您可以使用以下代码将一个包含Map类型和Array类型的数据结构写入MaxCompute表中:

    import com.google.cloud.datastore.entity.Key;
    import com.google.cloud.datastore.entity.MapBasedEntity;
    import com.google.cloud.datastore.entity.Value;
    import com.google.cloud.datastore.helpers.conversions.MapConversionHelper;
    import com.google.cloud.datastore.v1.Entity;
    import com.google.cloud.datastore.v1.KeyFactory;
    import com.google.cloud.datastore.v1.Value;
    import com.google.cloud.maxcompute.*;
    import org.apache.commons.lang3.StringUtils;
    
    // 创建一个MapBasedEntity对象,包含一个Map类型的属性和一个Array类型的属性
    Key key = KeyFactory.create("MyTable", "mykey");
    MapBasedEntity entity = new MapBasedEntity(ImmutableMap
        .of(
            "mymap" -> ImmutableMap
                .of(
                    "key1" -> ValueFactory.string("value1"),
                    "key2" -> ValueFactory.string("value2")
                ),
            "myarray" -> Arrays.asList(ValueFactory.string("value3"), ValueFactory.int64(42))
        ));
    
    // 将MapBasedEntity对象转换为Datastore实体对象,并使用DataHub的API将数据写入MaxCompute表中
    Entity outEntity = new Entity(entity);
    outEntity = convertToDatastoreEntity(outEntity);
    com.google.cloud.datastore.v1.Query query = Query.newBuilder()
            .setKind("MyTable")
            .setParent(key)
            .build();
    MaxComputeService maxComputeService = MaxComputeServiceOptions.getDefaultInstance().getService();
    Job job = maxComputeService.jobs().insert(outEntity).execute();
    

    在上面的示例中,我们首先创建了一个MapBasedEntity对象,该对象包含一个Map类型的属性和一个Array类型的属性。然后,我们将该对象转换为Datastore实体对象,并使用DataHub的API将数据写入MaxCompute表中。注意,由于MaxCompute表的数据类型限制,我们必须将Map类型的属性转换为Datastore中的Map类型字段,而将Array类型的属性转换为Datastore中的List类型字段。

    2023-05-15 11:01:23
    赞同 展开评论 打赏

DataWorks基于MaxCompute/Hologres/EMR/CDP等大数据引擎,为数据仓库/数据湖/湖仓一体等解决方案提供统一的全链路大数据开发治理平台。

相关电子书

更多
Data+AI时代大数据平台应该如何建设 立即下载
大数据AI一体化的解读 立即下载
极氪大数据 Serverless 应用实践 立即下载