全部产品
Search
文档中心

MaxCompute:Contoh penggunaan tabel terpartisi sebagai input

更新时间:Jun 19, 2025

Topik ini memberikan contoh penggunaan tabel terpartisi sebagai input dalam tugas MapReduce.

  • Contoh 1:

    public static void main(String[] args) throws Exception {
        JobConf job = new JobConf();
        ...
            LinkedHashMap<String, String> input = new LinkedHashMap<String, String>();
        input.put("pt", "123456");
        InputUtils.addTable(TableInfo.builder().tableName("input_table").partSpec(input).build(), job);
        LinkedHashMap<String, String> output = new LinkedHashMap<String, String>();
        output.put("ds", "654321");
        OutputUtils.addTable(TableInfo.builder().tableName("output_table").partSpec(output).build(), job);
        JobClient.runJob(job);
    }
  • Contoh 2:

    package com.aliyun.odps.mapred.open.example;
    ...
        public static void main(String[] args) throws Exception {
        if (args.length != 2) {
            System.err.println("Usage: WordCount <in_table> <out_table>");
            System.exit(2);
        }
        JobConf job = new JobConf();
        job.setMapperClass(TokenizerMapper.class);
        job.setCombinerClass(SumCombiner.class);
        job.setReducerClass(SumReducer.class);
        job.setMapOutputKeySchema(SchemaUtils.fromString("word:string"));
        job.setMapOutputValueSchema(SchemaUtils.fromString("count:bigint"));
        // Pasangan AccessKey dari akun Alibaba Cloud memiliki izin untuk semua Operasi API. Menggunakan kredensial ini untuk melakukan operasi adalah operasi berisiko tinggi. Kami menyarankan Anda menggunakan pengguna RAM untuk memanggil Operasi API atau melakukan O&M rutin. Untuk membuat pengguna RAM, masuk ke Konsol Resource Access Management (RAM).
        // Dalam contoh ini, ID AccessKey dan Rahasia AccessKey dikonfigurasi sebagai variabel lingkungan. Anda juga dapat menyimpan pasangan AccessKey Anda di file konfigurasi sesuai dengan kebutuhan bisnis Anda.
        // Kami menyarankan agar Anda tidak secara langsung menentukan ID AccessKey dan Rahasia AccessKey dalam kode untuk mencegah kebocoran pasangan AccessKey.
        Account account = new AliyunAccount(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
        Odps odps = new Odps(account);
        odps.setEndpoint("odps_endpoint_url");
        odps.setDefaultProject("my_project");
        Table table = odps.tables().get(tblname);
        TableInfoBuilder builder = TableInfo.builder().tableName(tblname);
        for (Partition p : table.getPartitions()) {
            if (applicable(p)) {
                LinkedHashMap<String, String> partSpec = new LinkedHashMap<String, String>();
                for (String key : p.getPartitionSpec().keys()) {
                    partSpec.put(key, p.getPartitionSpec().get(key));
                }
                InputUtils.addTable(builder.partSpec(partSpec).build(), job);
            }
        }
        OutputUtils.addTable(TableInfo.builder().tableName(args[1]).build(), job);
        JobClient.runJob(job);
    }
null
  • Pada Contoh 2, SDK MaxCompute dan SDK MapReduce digabungkan untuk mengimplementasikan tugas MapReduce yang membaca data dari partisi tertentu.

  • Kode sebelumnya tidak dapat dikompilasi untuk dieksekusi karena hanya merupakan contoh fungsi utama.

  • Fungsi applicable adalah logika kode kustom yang menentukan apakah partisi dapat digunakan sebagai input dalam tugas MapReduce.