Tüm Ürünler
Search
Belge Merkezi

DataWorks:OSS

Son Güncelleme:Oct 05, 2026

OSS veri kaynağı, OSS'ye okuma ve yazma erişimi sağlar. Bu konuda, DataWorks'ün OSS veri senkronizasyonunu nasıl desteklediği açıklanmaktadır.

Desteklenen alan türleri ve sınırlamalar

Toplu iş verisi okuma

OSS Reader, OSS'den veri okur ve bu veriyi Data Integration'ın işleyebileceği bir formata dönüştürür. OSS yapılandırılmamış bir veri depolama hizmeti olduğundan okuyucu aşağıdaki özellikleri destekler.

Desteklenir

Desteklenmez

  • İki boyutlu tablo şemasına sahip olması gereken TXT dosyalarını destekler.

  • Özel ayırıcıya sahip CSV benzeri dosyaları destekler.

    Not

    Metin formatları (TXT ve CSV) gzip, bzip2 ve zip sıkıştırmayı destekler.

    Birden çok dosyayı tek bir sıkıştırılmış arşivde paketleyemezsiniz.

  • ORC, Parquet, JSON ve JSONL formatındaki dosyaları destekler.

  • Çeşitli veri türlerini (STRING olarak temsil edilir), sütun budamayı ve sütun sabitlerini okumayı destekler.

  • Yinelemeli okumaları ve nesne adı filtrelemeyi destekler.

  • Birden çok nesneden eş zamanlı okumayı destekler.

  • Okuyucu, birden çok iş parçacığı kullanarak tek bir nesneyi (dosyayı) eş zamanlı olarak okuyamaz.

  • Tek bir sıkıştırılmış nesne, eş zamanlı çoklu iş parçacıklı okumayı desteklemez.

Önemli
  • OSS'de verileri hazırlarken CSV dosyalarının standart CSV formatına uygun olması gerekir. Örneğin, bir sütundaki çift tırnak işaretini (") iki çift tırnak işareti ("") ile değiştirerek kaçış yapmalısınız; aksi takdirde dosya yanlış bölünebilir. Bir dosya birden fazla ayırıcı içeriyorsa metin türünü kullanmanızı öneririz.

  • OSS, dosya tipi verileri depolayan yapılandırılmamış bir veri kaynağıdır. Verileri senkronize etmeden önce, senkronize edilecek verilerin alan yapısının beklentilerinizi karşıladığını doğrulayın. Benzer şekilde, yapılandırılmamış bir veri kaynağının veri yapısı değişirse görev yapılandırmasında alan yapısını yeniden onaylamanız gerekir. Aksi takdirde veri senkronizasyonu hataları oluşabilir.

Toplu iş verisi yazma

OSS Writer, Data Integration protokolündeki verileri OSS'deki metin dosyalarına dönüştürür. OSS yapılandırılmamış bir veri depolama hizmeti olduğundan yazıcı aşağıdaki özellikleri destekler.

Desteklenir

Desteklenmez

  • Yalnızca metin dosyaları yazılabilir. Video ve görüntü gibi BLOB verileri desteklenmez. Metin dosyalarının iki boyutlu bir tablo şemasına sahip olması gerekir.

  • Özel ayırıcıya sahip CSV benzeri dosyaları destekler.

  • ORC, Parquet, JSON ve JSONL formatlarını destekler.

    Not

    SNAPPY sıkıştırma formatı betik modunda desteklenir.

  • Her iş parçacığının farklı bir alt dosyaya yazdığı çoklu iş parçacıklı yazmayı destekler.

  • Dosya döndürmeyi destekler. Bir dosya belirtilen boyutu aştığında yazıcı yeni bir dosyaya geçer.

  • Tek bir dosya eş zamanlı yazmayı desteklemez.

  • OSS yerel veri türleri sağlamaz. OSS Writer tüm verileri OSS nesnelerine STRING türü olarak yazar.

  • OSS paketinin depolama sınıfı Cold Archive Storage ise yazma işlemleri desteklenmez.

  • Tek bir nesnenin (dosyanın) boyutu 100 GB'ı aşamaz.


Kategori


Data Integration sütun türü


Tamsayı


LONG


Dize


STRING


Kayan nokta


DOUBLE


Boolean


BOOLEAN


Tarih ve saat


DATE

Gerçek zamanlı yazma

  • Gerçek zamanlı yazma yeteneklerini destekler.

  • Veri göllerine tek tablo gerçek zamanlı yazma desteklenir: Hudi (%0,12.x), Paimon ve Iceberg.

Veri kaynağı oluşturma

DataWorks'te bir senkronizasyon görevi geliştirmeden önce gerekli veri kaynağını Veri kaynağı yapılandırması bölümündeki talimatları izleyerek DataWorks'e eklemeniz gerekir. Bir veri kaynağı eklerken parametrelerin anlamlarını anlamak için DataWorks konsolunda parametre açıklamalarını görüntüleyebilirsiniz.

Not

Veri senkronizasyonu görevi geliştirme

Senkronizasyon görevini yapılandırmaya yönelik giriş noktası ve prosedür hakkında bilgi için aşağıdaki yapılandırma kılavuzlarına bakın.

Tek tablo toplu iş senkronizasyonu görevi yapılandırma kılavuzu

Tek tablo gerçek zamanlı senkronizasyon görevi yapılandırma kılavuzu

Prosedür için bkz. Tek tablo gerçek zamanlı senkronizasyon görevi yapılandırması.

Tam veritabanı senkronizasyonu yapılandırma kılavuzu

Prosedür için bkz. Tam Veritabanı Toplu İş Senkronizasyonu Görevi Yetenekleri ve Tam Veritabanı Gerçek Zamanlı Senkronizasyon Görevi Yetenekleri.

SSS

OSS dosyalarını okurken dosya sayısı sınırı var mı?

Çok karakterli ayırıcılara sahip CSV dosyalarını okurken kirli verileri nasıl işlerim?

Ek: Betik demoları ve parametre açıklaması

Kod düzenleyiciyi kullanarak toplu iş senkronizasyonu görevi yapılandırma

Toplu iş senkronizasyonu görevini kod düzenleyiciyi kullanarak yapılandırmak istiyorsanız birleşik betik formatı gereksinimlerine göre betikteki ilgili parametreleri yapılandırmanız gerekir. Daha fazla bilgi için bkz. Betik modu yapılandırması. Aşağıdaki bilgiler, kod düzenleyiciyi kullanarak toplu iş senkronizasyonu görevini yapılandırırken veri kaynakları için yapılandırmanız gereken parametreleri açıklamaktadır.

Okuyucu betik demosu: Genel örnek

Aşağıdaki örnek, OSS Reader için genel bir betiği göstermektedir.

{ "type":"job", "version":"2.0",//Sürüm numarası. "steps":[ { "stepType":"oss",//Eklenti adı. "parameter":{ "nullFormat":"",//Null değeri temsil eden dize. "compress":"",//Metin sıkıştırma türü. "datasource":"",//Veri kaynağı. "column":[//Sütunlar. { "index":0,//Sütun dizini. "type":"string"//Veri türü. }, { "index":1, "type":"long" }, { "index":2, "type":"double" }, { "index":3, "type":"boolean" }, { "format":"yyyy-MM-dd HH:mm:ss", //Saat formatı. "index":4, "type":"date" } ], "skipHeader":"",//CSV benzeri dosyalar başlık satırı içerebilir. Başlığı atlamak için bu parametreyi ayarlayın. "encoding":"",//Kodlama formatı. "fieldDelimiter":",",//Alan ayırıcı. "fileFormat": "",//Metin türü. "object":[]//Nesne öneki. }, "name":"Reader", "category":"reader" }, { "stepType":"stream", "parameter":{}, "name":"Writer", "category":"writer" } ], "setting":{ "errorLimit":{ "record":""//İzin verilen maksimum hata kaydı sayısı. }, "speed":{ "throttle":true,//Throttle false olarak ayarlanırsa mbps parametresi etkili olmaz, yani kısıtlama devre dışı bırakılır. Throttle true olarak ayarlanırsa kısıtlama etkinleştirilir. "concurrent":1 //Eş zamanlı iş parçacığı sayısı. "mbps":"12",//Kısıtlama hızı. 1 mbps = 1 MB/s. } }, "order":{ "hops":[ { "from":"Reader", "to":"Writer" } ] } }

Okuyucu betik demosu: OSS'den ORC veya Parquet dosyaları okuma

OSS Reader, HDFS Reader'ı yeniden kullanarak OSS'den ORC veya Parquet dosyalarını okur. Mevcut OSS Reader parametrelerine ek olarak aşağıdaki genişletilmiş parametreler eklenmiştir: Path (ORC) ve FileFormat (ORC, Parquet) .

  • Aşağıdaki örnek, OSS'den ORC dosyalarının nasıl okunacağını göstermektedir.

    {
    "stepType": "oss",
    "parameter": {
    "datasource": "",
    "fileFormat": "orc",
    "path": "/tests/case61/orc__691b6815_9260_4037_9899_****",
    "column": [
    {
    "index": 0,
    "type": "long"
    },
    {
    "index": "1",
    "type": "string"
    },
    {
    "index": "2",
    "type": "string"
    }
    ]
    }
    }
  • Aşağıdaki örnek, OSS'den Parquet dosyalarının nasıl okunacağını göstermektedir.

    {
      "type":"job",
        "version":"2.0",
        "steps":[
        {
          "stepType":"oss",
          "parameter":{
            "nullFormat":"",
            "compress":"",
            "fileFormat":"parquet",
            "path":"/*",
            "parquetSchema":"message m { optional BINARY registration_dttm (UTF8); optional Int64 id; optional BINARY first_name (UTF8); optional BINARY last_name (UTF8); optional BINARY email (UTF8); optional BINARY gender (UTF8); optional BINARY ip_address (UTF8); optional BINARY cc (UTF8); optional BINARY country (UTF8); optional BINARY birthdate (UTF8); optional DOUBLE salary; optional BINARY title (UTF8); optional BINARY comments (UTF8); }",
            "column":[
              {
                "index":"0",
                "type":"string"
              },
              {
                "index":"1",
                "type":"long"
              },
              {
                "index":"2",
                "type":"string"
              },
              {
                "index":"3",
                "type":"string"
              },
              {
                "index":"4",
                "type":"string"
              },
              {
                "index":"5",
                "type":"string"
              },
              {
                "index":"6",
                "type":"string"
              },
              {
                "index":"7",
                "type":"string"
              },
              {
                "index":"8",
                "type":"string"
              },
              {
                "index":"9",
                "type":"string"
              },
              {
                "index":"10",
                "type":"double"
              },
              {
                "index":"11",
                "type":"string"
              },
              {
                "index":"12",
                "type":"string"
              }
            ],
            "skipHeader":"false",
            "encoding":"UTF-8",
            "fieldDelimiter":",",
            "fieldDelimiterOrigin":",",
            "datasource":"wpw_demotest_oss",
            "envType":0,
            "object":[
              "wpw_demo/userdata1.parquet"
            ]
          },
          "name":"Reader",
          "category":"reader"
        },
        {
          "stepType":"odps",
          "parameter":{
            "partition":"dt=${bizdate}",
            "truncate":true,
            "datasource":"0_odps_wpw_demotest",
            "envType":0,
            "column":[
              "id"
            ],
            "emptyAsNull":false,
            "table":"wpw_0827"
          },
          "name":"Writer",
          "category":"writer"
        }
      ],
        "setting":{
        "errorLimit":{
          "record":""
        },
        "locale":"zh_CN",
          "speed":{
          "throttle":false,
            "concurrent":2
        }
      },
      "order":{
        "hops":[
          {
            "from":"Reader",
            "to":"Writer"
          }
        ]
      }
    }

Okuyucu betik demosu: OSS'den JSONLine dosyaları okuma, JSON verilerini ayrıştırma ve verileri hedefe yazma

Aşağıdaki örnek, OSS'den JSONLine verilerinin nasıl okunacağını, JSON verilerinin nasıl ayrıştırılacağını, JSON verilerindeki belirli alanların nasıl vektörleştirileceğini ve ardından verilerin Milvus'a nasıl yazılacağını göstermektedir:

{
    "type": "job",
    "version": "2.0",
    "steps": [
        {
            "stepType": "oss",
            "parameter": {
                "datasource": "${OSS data source name}",
                "column": [
                    {
                        "name": "chunk_text",
                        "index": 0,
                        "type": "string"
                    }
                ],
                "fieldDelimiter": ",",
                "encoding": "UTF-8",
                "fileFormat": "jsonl",
                "object": [
                    "embedding/chunk1.jsonl"
                ]
            },
            "name": "Reader",
            "category": "reader"
        },
        {
            "stepType": "json-extracting",
            "parameter": {
                "column": [
                    {
                        "name": "text",
                        "fromColumn": "chunk_text",
                        "jsonPath": "$.text",
                        "type": "STRING",
                        "nullOrInvalidDataAction": "DIRTY_DATA"
                    }
                ]
            },
            "name": "jsonextract",
            "category": "flatmap"
        },
        {
            "stepType": "embedding-transformer",
            "parameter": {
                "modelProvider": "bailian",
                "modelName": "text-embedding-v4",
                "apiKey": "${the AccessKey that you want to use}",
                "embeddingColumns": {
                    "sourceColumnNames": [
                        "text"
                    ],
                    "embeddingColumnName": "my_vector"
                },
                "batchSize": 8,
                "dimension": 1024
            },
            "name": "embedding",
            "category": "flatmap"
        },
        {
            "stepType": "milvus",
            "parameter": {
                "schemaCreateMode": "ignore",
                "enableDynamicSchema": true,
                "datasource": "${Milvus data source name}",
                "column": [
                    {
                        "name": "my_vector",
                        "type": "FloatVector",
                        "dimension": "1024",
                        "elementType": "None",
                        "maxLength": "65535"
                    },
                    {
                        "name": "text",
                        "type": "VarChar",
                        "elementType": "None",
                        "maxLength": "65535"
                    }
                ],
                "collection": "yunshi_vector_07171130",
                "writeMode": "insert",
                "batchSize": 1024,
                "columnMapping": [
                    {
                        "sourceColName": "my_vector",
                        "dstColName": "my_vector"
                    },
                    {
                        "sourceColName": "text",
                        "dstColName": "text"
                    }
                ]
            },
            "name": "Writer",
            "category": "writer"
        }
    ],
    "setting": {
        "errorLimit": {
            "record": "0"
        },
        "speed": {
            "concurrent": 1
        }
    }
}

Okuyucu betik parametreleri

Parametre

Açıklama

Gerekli

Varsayılan değer

datasource

Veri kaynağının adı. Betik modu veri kaynakları eklemeyi destekler. Bu parametrenin değeri, eklenen veri kaynağının adıyla aynı olmalıdır.

Evet

Yok

Nesne

Bu parametre, OSS'den senkronize edilecek bir veya daha fazla nesneyi belirtir. Üç yapılandırma yöntemi desteklenir: açık yollar, joker karakterli yollar ve dinamik parametre yolları.

1. Yapılandırma yöntemleri

  • Açık yollar

    • Temel kural: Yol, paketin kök dizininden başlar ve paket adını içermesi gerekmez.

    • Tek bir dosya belirtme: Dosyanın tam yolunu girin. Örnek: my_folder/my_file.txt.

    • Birden çok nesne belirtme: Birden çok dosya veya klasörün yollarını virgül (,) ile ayırın. Örnek: folder_a/file1.txt, folder_a/file2.txt.

  • Joker karakterli yollar

    • Belirli bir desene uyan birden çok dosyayı eşleştirmek için joker karakterleri kullanabilirsiniz.

    • *: Sıfır veya daha fazla rastgele karakterle eşleşir.

    • ?: Tam olarak bir rastgele karakterle eşleşir.

    • Örnekler:

      • abc*[0-9].txt, abc0.txt, abc10,txt, abc_test_9.txt ve daha fazlasıyla eşleşebilir.

      • abc?.txt, abc1.txt, abcX.txt ve daha fazlasıyla eşleşebilir.

  • Dinamik parametre yolları

    • Otomatik senkronizasyonu etkinleştirmek için yola zamanlama parametrelerini gömebilirsiniz. Bir görev çalıştırıldığında parametreler gerçek değerleriyle değiştirilir.

    • Örnek: Yolu raw_data/${bizdate}/abc.txt olarak ayarlarsanız görev, iş tarihine karşılık gelen klasörü günlük olarak dinamik olarak senkronize eder.

    • Zamanlama parametreleri hakkında daha fazla bilgi için bkz. Zamanlama parametresi kaynakları ve ifadeleri.

Önemli
  • Joker karakterleri dikkatli kullanın. Joker karakterlerin (özellikle *) kullanılması OSS yollarının tarama taramasını tetikler. Dosya sayısı büyük olduğunda bu durum önemli miktarda bellek ve zaman tüketebilir ve hatta yetersiz bellek hataları nedeniyle görevlerin başarısız olmasına neden olabilir. Üretim ortamlarında geniş joker karakterler kullanmamanızı öneririz. Bu sorunla karşılaşırsanız dosyaları senkronizasyondan önce farklı dizinlere bölmelisiniz.

  • Veri senkronizasyonu sistemi, tek bir işte senkronize edilen tüm nesneleri tek bir veri tablosu olarak değerlendirir. Tüm nesnelerin aynı şemaya uygun olduğundan emin olmalısınız.

2. Eş zamanlı okuma mekanizması ve performans

Yapılandırma yöntemi, veri çıkarma işleminin eşzamanlılık performansını doğrudan belirler:

  • Tek iş parçacığı modu: Yalnızca tek bir açık, sıkıştırılmamış dosya belirttiğinizde görev verileri tek iş parçacığı modunda çıkarır.

  • Çoklu iş parçacığı modu: Birden çok açık dosya belirttiğinizde veya birden çok dosyayla eşleşen joker karakterler kullandığınızda görev, çıkarma verimliliğini önemli ölçüde artırmak için otomatik olarak çoklu iş parçacıklı eş zamanlı okumaları etkinleştirir. Eş zamanlı iş parçacığı sayısını Channel Control içinde yapılandırabilirsiniz.

Evet

Yok

parquetSchema

Bu parametre, OSS verilerini Parquet dosya formatında okurken kullanılır. Yalnızca fileFormat parquet olarak ayarlandığında etkili olur ve Parquet depolamanın tür tanımını belirtir. parquetSchema'yı belirttikten sonra genel yapılandırmanın JSON sözdizimine uygun olduğundan emin olun.

message MessageTypeName {
required_or_optional, data_type, column_name;
......................;
}

parquetSchema yapılandırma formatı aşağıda açıklanmıştır:

  • MessageType adı: Bir ad belirtin.

  • Gerekli veya isteğe bağlı: required, alanın null olamayacağını; optional ise alanın null olabileceğini belirtir. Tüm alanları optional olarak ayarlamanızı öneririz.

  • Veri türü: Parquet dosyaları BOOLEAN, Int32, Int64, Int96, FLOAT, DOUBLE, BINARY (dize türleri için BINARY kullanın) ve fixed_len_byte_array türlerini destekler.

  • Her sütun tanımı, son satır dahil olmak üzere noktalı virgülle bitmelidir.

Aşağıda örnek bir yapılandırma gösterilmektedir.

"parquetSchema": "message m { optional int32 minute_id; optional int32 dsp_id; optional int32 adx_pid; optional int64 req; optional int64 res; optional int64 suc; optional int64 imp; optional double revenue; }"

Hayır

Yok

sütun

Okunacak alanların listesi. type, kaynak verinin veri türünü belirtir; index, mevcut sütunun metin dosyasındaki karşılık geldiği sütun numarasını (sıfır tabanlı) belirtir; value ise mevcut sütunun bir sabit olduğunu belirtir. Sistem, verileri kaynak dosyadan okumak yerine belirtilen değere dayanarak sütunu otomatik olarak oluşturur.

Varsayılan olarak tüm verileri STRING türü olarak okuyabilirsiniz. Yapılandırma aşağıdaki gibidir.

"column": ["*"]

Sütun alan bilgilerini belirtebilirsiniz. Yapılandırma aşağıdaki gibidir.

"column":
    {
       "type": "long",
       "index": 0    //OSS metninin ilk sütunundan INT alanını alın.
    },
    {
       "type": "string",
       "value": "alibaba"  //Mevcut alan olarak OSSReader'dan "alibaba" dize alanını oluşturun.
    }
Not

Belirttiğiniz sütun bilgileri için type parametresi gereklidir ve index veya value parametrelerinden birini belirtmeniz gerekir.

Evet

Tüm veriler STRING türü olarak okunur.

fileFormat

Dosya türü. Kaynak OSS nesnelerinin dosya türü. Geçerli değerler: csv, text, parquet, orc, json ve jsonl. Hem csv hem de text formatları özel ayırıcıları destekler.

Evet

csv

fieldDelimiter

Veri okuma için alan ayırıcı.

Not

OSS Reader veri okurken bir alan ayırıcı belirtmeniz gerekir. Belirtmezseniz varsayılan olarak virgül (,) kullanılır. Virgül (,) konsol yapılandırmasındaki varsayılan değerdir.

Ayırıcı görünmezse Unicode kodlamasını girin. Örneğin, \u001b veya \u007c.

Evet

,

lineDelimiter

Veri okuma için satır ayırıcı.

Not

Bu parametre yalnızca fileFormat text olarak ayarlandığında etkili olur.

Hayır

Yok

sıkıştır

Metin dosyaları için sıkıştırma türü. Varsayılan olarak bu parametre boş bırakılır; bu, verilerin sıkıştırılmadığı anlamına gelir. Geçerli değerler: gzip, bzip2 ve zip.

Hayır

Sıkıştırma yok

kodlama

Dosyaları okumak için kullanılan kodlama.

Hayır

utf-8

nullFormat

Standart dizeler, metin dosyalarında null (null işaretçi) tanımlamak için kullanılamaz. Data Integration, hangi dizelerin null temsil edebileceğini tanımlamak için nullFormat parametresini sağlar. Örnekler:

  • nullFormat:"null" şeklinde yapılandırırsanız bu "görünür bir karakter" ile eşdeğerdir ve kaynak veri null ise Data Integration alanı null alan olarak değerlendirir.

  • nullFormat:"\u0001" şeklinde yapılandırırsanız bu "görünmez bir karakter" ile eşdeğerdir ve kaynak veri "\u0001" dizesi ise Data Integration alanı null alan olarak değerlendirir.

  • "nullFormat" parametresini belirtmezseniz bu "yapılandırılmamış" ile eşdeğerdir ve kaynak veri herhangi bir dönüşüm olmadan olduğu gibi hedefe yazılır.

Hayır

Yok

skipHeader

CSV benzeri dosyalar atlanması gereken sütun başlıklarına sahip bir başlık satırı içerebilir. Varsayılan olarak başlık atlanmaz. skipHeader sıkıştırılmış dosya modunda desteklenmez.

Hayır

false

csvReaderConfig

CSV benzeri dosyaları okuma yapılandırması. Bu parametre MAP türündedir. CsvReader, CSV benzeri dosyaları okumak için kullanılır ve çeşitli yapılandırmaları destekler. Bu parametre belirtilmezse varsayılan değerler kullanılır.

Hayır

Yok

successOnNoObject

Belirtilen okuma yolunda nesne olmadığında görevin başarılı olarak sonlanıp sonlanmayacağını belirtir. Bu parametre false olarak ayarlanırsa görev başarısız olur. True olarak ayarlanırsa görev herhangi bir veri yazmadan başarılı olarak sonlanır. Bu parametre, kaynak yolun boş olabileceği periyodik senkronizasyon senaryoları için geçerlidir. Kodsuz kullanıcı arayüzü modunda bu parametre "Allow Missing Source Files" seçeneğine karşılık gelir ve yalnızca fileFormat csv veya text olarak ayarlandığında görüntülenir.

Hayır

false

minLastModified

Yalnızca son değiştirilme zamanı belirtilen zamana eşit veya ondan sonraki olan dosyaların senkronize edildiğini belirtir. Format yyyyMMddHHmmss şeklindedir. Örneğin, "minLastModified": "20250101000000" yapılandırırsanız yalnızca 1 Ocak 2025 00:00:00 tarihinde veya sonrasında değiştirilen dosyalar okunur ve daha eski dosyalar filtrelenir. Bu parametreyi maxLastModified ile birlikte kullanarak [min, max) sol kapalı, sağ açık bir aralık oluşturabilirsiniz.

Hayır

Yok

maxLastModified

Yalnızca son değiştirilme zamanı belirtilen zamandan önce olan dosyaları senkronize eder. Format yyyyMMddHHmmss şeklindedir. Örneğin, "maxLastModified": "20250102000000" ayarlarsanız yalnızca 2 Ocak 2025 00:00:00 tarihinden önce değiştirilen dosyalar okunur. Tam o zamanda değiştirilen dosyalar hariç tutulur (sağ açık aralık). Bu parametreyi minLastModified ile birlikte kullanarak [min, max) sol kapalı, sağ açık bir aralık tanımlayabilirsiniz.

Hayır

Yok

Yazıcı betik demosu: Genel örnek

Aşağıda OSS Writer için genel bir betik örneği verilmiştir.

{ "type":"job", "version":"2.0", "steps":[ { "stepType":"stream", "parameter":{}, "name":"Reader", "category":"reader" }, { "stepType":"oss",// Eklenti adı. "parameter":{ "nullFormat":"",// Data Integration tarafından sağlanan null formatı, hangi dizelerin null temsil edebileceğini tanımlar. "dateFormat":"",// Tarih formatı. "datasource":"",// Veri kaynağı. "writeMode":"",// Yazma modu. "writeSingleObject":"false", // Senkronize edilen verilerin tek bir OSS dosyasına yazılıp yazılmayacağını belirtir. "encoding":"",// Kodlama formatı. "fieldDelimiter":","// Alan ayırıcı. "fileFormat":"",// Dosya formatı. "object":""// Nesne öneki. }, "name":"Writer", "category":"writer" } ], "setting":{ "errorLimit":{ "record":"0"// İzin verilen maksimum hata kaydı sayısı. }, "speed":{ "throttle":true,// Throttle false olarak ayarlanırsa mbps parametresi etkili olmaz ve bant genişliği kısıtlanmaz. Throttle true olarak ayarlanırsa bant genişliği kısıtlanır. "concurrent":1, // Eş zamanlı iş parçacığı sayısı. "mbps":"12"// Kısıtlama hızı. 1 mbps = 1 MB/s. } }, "order":{ "hops":[ { "from":"Reader", "to":"Writer" } ] } }

Yazıcı betik demosu: OSS'ye ORC veya Parquet dosyaları yazma

OSS, HDFS Writer'ı yeniden kullanarak ORC veya Parquet dosyalarının yazılmasını destekler. Mevcut OSS Writer parametrelerine ek olarak Path ve FileFormat gibi genişletilmiş yapılandırma parametreleri eklenmiştir. Bu parametreler hakkında bilgi için bkz. HDFS Writer.

Aşağıda OSS'ye ORC veya Parquet dosyaları yazmaya ilişkin bir örnek verilmiştir:

Önemli

Aşağıdaki yalnızca bir örnektir. Parametreleri gerçek sütun adlarınıza ve türlerinize göre değiştirin. Örneği doğrudan kopyalayıp kullanmayın.

  • OSS'ye ORC dosyaları yazma

    ORC dosyaları yazmak için yalnızca betik modu desteklenir. Yapılandırma için betik moduna geçmelisiniz. fileFormat öğesini orc olarak ayarlayın, path öğesini yazılacak dosyanın yoluna ayarlayın ve column öğesini {"name":"sütun adınız","type": "sütun türünüz"} formatında yapılandırın.

    Yazma için aşağıdaki ORC türleri desteklenir:


    Alan türü


    OSS'ye toplu iş yazma (ORC formatı)


    TINYINT


    Desteklenir


    SMALLINT


    Desteklenir


    INT


    Desteklenir


    BIGINT


    Desteklenir


    FLOAT


    Desteklenir


    DOUBLE


    Desteklenir


    TIMESTAMP


    Desteklenir


    DATE


    Desteklenir


    VARCHAR


    Desteklenir


    STRING


    Desteklenir


    CHAR


    Desteklenir


    BOOLEAN


    Desteklenir


    DECIMAL


    Desteklenir


    BINARY


    Desteklenir

    {
    "stepType": "oss",
    "parameter": {
    "datasource": "",
    "fileFormat": "orc",
    "path": "/tests/case61",
    "fileName": "orc",
    "writeMode": "append",
    "column": [
    {
    "name": "col1",
    "type": "BIGINT"
    },
    {
    "name": "col2",
    "type": "DOUBLE"
    },
    {
    "name": "col3",
    "type": "STRING"
    }
    ],
    "writeMode": "append",
    "fieldDelimiter": "\t",
    "compress": "NONE",
    "encoding": "UTF-8"
    }
    }
  • OSS'ye Parquet formatında yazma

    {
    "stepType": "oss",
    "parameter": {
    "datasource": "",
    "fileFormat": "parquet",
    "path": "/tests/case61",
    "fileName": "test",
    "writeMode": "append",
    "fieldDelimiter": "\t",
    "compress": "SNAPPY",
    "encoding": "UTF-8",
    "parquetSchema": "message test { required int64 int64_col;\n required binary str_col (UTF8);\nrequired group params (MAP) {\nrepeated group key_value {\nrequired binary key (UTF8);\nrequired binary value (UTF8);\n}\n}\nrequired group params_arr (LIST) {\nrepeated group list {\nrequired binary element (UTF8);\n}\n}\nrequired group params_struct {\nrequired int64 id;\n required binary name (UTF8);\n }\nrequired group params_arr_complex (LIST) {\nrepeated group list {\nrequired group element {\n required int64 id;\n required binary name (UTF8);\n}\n}\n}\nrequired group params_complex (MAP) {\nrepeated group key_value {\nrequired binary key (UTF8);\nrequired group value {\nrequired int64 id;\n required binary name (UTF8);\n}\n}\n}\nrequired group params_struct_complex {\nrequired int64 id;\n required group detail {\nrequired int64 id;\n required binary name (UTF8);\n}\n}\n}",
    "dataxParquetMode": "fields"
    }
    }

Yazıcı betik parametreleri

Parametre

Açıklama

Gerekli

Varsayılan değer

datasource

Veri kaynağının adı. Betik modunda bir veri kaynağı ekleyebilirsiniz. Bu parametrenin değeri, eklediğiniz veri kaynağının adıyla aynı olmalıdır.

Evet

Yok

nesne

OSS Writer'ın yazdığı dosyanın adı. OSS, dizin yapısını simüle etmek için dosya adlarını kullanır. OSS, nesne adları üzerinde aşağıdaki sınırlamaları uygular:

  • "object": "datax" kullanırsanız yazılan nesne adı datax ile başlar ve ardından rastgele bir dize soneki gelir.

  • "object": "cdo/datax" kullanırsanız yazılan nesne adı /cdo/datax ile başlar ve ardından rastgele bir dize soneki gelir. OSS, eğik çizgi (/) öğesini dizin ayırıcı olarak kullanır.

Rastgele bir UUID soneki istemiyorsanız "writeSingleObject" : "true" ayarlamanızı öneririz. Daha fazla bilgi için writeSingleObject açıklamasına bakın.

Evet

Yok

ossBlockSize

OSS çok parçalı yüklemeleri için blok boyutu. Varsayılan blok boyutu 16 MB'dır. Dosya formatı parquet veya ORC olduğunda bu parametreyi nesne parametresiyle aynı düzeyde yapılandırabilirsiniz.

OSS çok parçalı yüklemeleri en fazla 10.000 parçayı destekler. Varsayılan blok boyutuyla maksimum dosya boyutu 160 GB'dır. Parça sayısı sınırı aşarsa daha büyük dosya yüklemelerini desteklemek için blok boyutunu artırabilirsiniz.

Hayır

16

writeMode

OSS Writer'ın yazmadan önce mevcut verileri nasıl işleyeceğini belirtir:

  • truncate: Yazmadan önce belirtilen önekle eşleşen adlara sahip tüm nesneleri temizler. Örneğin, "object":"abc" ayarlarsanız adları abc ile başlayan tüm nesneler temizlenir.

  • append: Yazmadan önce herhangi bir işlem yapılmaz. Data Integration OSS Writer, verileri doğrudan nesne adını kullanarak yazar ve benzersiz dosya adlarını sağlamak için rastgele bir UUID soneki ekler. Örneğin, nesne adını DI olarak belirtirseniz gerçek yazılan nesne adı DI_**__** olur.

  • nonConflict: Belirtilen yolda eşleşen öneke sahip herhangi bir nesne varsa bir hata döndürülür. Örneğin, "object":"abc" ayarlarsanız ve abc123 adlı bir nesne varsa bir hata döndürülür.

Evet

Yok

writeSingleObject

OSS'ye veri yazarken verilerin tek bir dosyaya yazılıp yazılmayacağını belirtir:

  • true: Verileri tek bir dosyaya yazın. Hiçbir veri okunmazsa boş bir dosya oluşturulmaz.

  • false: Verileri birden çok dosyaya yazın. Hiçbir veri okunmazsa ve bir dosya üstbilgisi yapılandırılırsa yalnızca dosya üstbilgisini içeren boş bir dosya oluşturulur. Aksi takdirde yalnızca boş bir dosya oluşturulur.

Not
  • Verileri ORC veya Parquet formatında yazarken writeSingleObject parametresi etkili olmaz. Bu, çoklu eşzamanlılık senaryolarında verileri tek bir ORC veya Parquet dosyasına yazmak için bu parametreyi kullanamayacağınız anlamına gelir. Verileri tek bir dosyaya yazmak için eşzamanlılığı 1 olarak ayarlayabilirsiniz. Ancak dosya adına rastgele bir sonek eklenir ve eşzamanlılığı 1 olarak ayarlamak senkronizasyon hızını azaltır.

  • Kaynağın Hologres olduğu bazı senaryolarda veriler parça parça okunur. Tek bir eşzamanlılık bile birden çok dosya oluşturabilir.

Hayır

false

fileFormat

Çıktı dosyasının formatı. Aşağıdaki formatlar desteklenir:

  • csv: Yalnızca katı csv formatı desteklenir. Yazılacak veriler sütun ayırıcıları içeriyorsa veriler csv kaçış sözdizimine göre kaçış yapılır. Kaçış karakteri çift tırnak işaretidir (").

  • text: Yazılacak veriler basitçe sütun ayırıcılarla ayrılır. Yazılacak veriler sütun ayırıcıları içeriyorsa kaçış işlemi yapılmaz.

  • parquet: Bu dosya türünü kullanıyorsanız veri türlerini tanımlamak için parquetSchema parametresini eklemeniz gerekir.

    Önemli
  • ORC: Bu formatı kullanıyorsanız betik moduna geçmeniz gerekir.

  • json, jsonl: Veriler JSON formatında yazılır.

Hayır

text

sıkıştır

OSS'ye yazılan veri dosyalarının sıkıştırma formatı. Bu parametreyi betik modunda yapılandırmanız gerekir.

Önemli

CSV ve TEXT formatları için sıkıştırma desteklenmez. Parquet ve ORC dosyaları yalnızca SNAPPY sıkıştırmayı destekler.

Hayır

Yok

fieldDelimiter

Yazma için alan ayırıcı.

Hayır

,

kodlama

Çıktı dosyası için kodlama yapılandırması.

Hayır

utf-8

parquetSchema

OSS'ye Parquet dosya formatında yazarken gereklidir. Bu parametre hedef dosyanın şemasını açıklar ve yalnızca fileFormat parquet olarak ayarlandığında etkili olur. Format aşağıdaki gibidir.

message MessageTypeName {
required_or_optional, data_type, column_name;
......................;
}

Yapılandırma öğeleri aşağıda açıklanmıştır:

  • MessageType adı: Bir ad girin.

  • Gerekli olup olmadığı: required, alanın null olamayacağını; optional ise alanın null olabileceğini belirtir. Tüm alanları optional olarak ayarlamanızı öneririz.

  • Veri türü: Parquet dosyaları şu türleri destekler: BOOLEAN, INT32, INT64, INT96, FLOAT, DOUBLE, BINARY (dize türleri için BINARY kullanın) ve FIXED_LEN_BYTE_ARRAY.

Not

Her sütun tanımı, son satır dahil olmak üzere noktalı virgülle bitmelidir.

Örnek:

message m {
optional int64 id;
optional int64 date_id;
optional binary datetimestring;
optional int32 dspId;
optional int32 advertiserId;
optional int32 status;
optional int64 bidding_req_num;
optional int64 imp;
optional int64 click_num;
}

Hayır

Yok

nullFormat

Standart dizeler, metin dosyalarında null (null işaretçi) tanımlamak için kullanılamaz. Veri senkronizasyonu sistemi, null temsil eden bir dizeyi tanımlamak için nullFormat sağlar. Örneğin, nullFormat="null" ayarlarsanız ve kaynak veri null ise veri senkronizasyonu sistemi bunu null alan olarak değerlendirir.

Hayır

Yok

üstbilgi

OSS'ye yazarken üstbilgi satırı. Örnek: ["id", "name", "age"].

Hayır

Yok

maxFileSize (gelişmiş yapılandırma, kodsuz kullanıcı arayüzünde desteklenmez)

OSS'ye yazılan tek bir nesne dosyasının maksimum boyutu. Varsayılan değer 10.000 × 10 MB'dır. Bu, log4j günlüklerini yazdırırken günlük dosya boyutlarını kontrol etmeye benzer. OSS çok parçalı yükleme sırasında her parça 10 MB'dır (bu aynı zamanda günlük döndürme için minimum granülerliktir, yani 10 MB'den küçük herhangi bir maxFileSize değeri 10 MB olarak kabul edilir). Her OSS InitiateMultipartUploadRequest en fazla 10.000 parçayı destekler.

Döndürme gerçekleştiğinde nesne adı, UUID tabanlı rastgele bir dize ile orijinal nesne önekine _1,_2,_3 gibi sonekler eklenerek oluşturulur.

Not
  • Varsayılan birim MB'dir.

  • Yapılandırma örneği: "maxFileSize":300 tek bir dosyanın maksimum boyutunu 300 MB olarak ayarlar.

  • maxFileSize yalnızca CSV ve TEXT formatları için etkili olur. Dosya boyutu, senkronizasyon görevi işleminin bellek düzeyinde hesaplanır ve hedefe yazılan dosyaların gerçek boyutunu kesin olarak kontrol edemez. Yazma işlemi sırasında veri genişlemesi nedeniyle gerçek dosya boyutu beklenen değeri aşabilir.

Hayır

100.000

sonek (gelişmiş yapılandırma, kodsuz kullanıcı arayüzünde desteklenmez)

Veri senkronizasyonu yazma sırasında oluşturulan dosya adına eklenen sonek. Örneğin, sonek öğesini .csv olarak ayarlarsanız son dosya adı fileName****.csv olur.

Hayır

Yok

Ek: Parquet verileri için tür dönüştürme stratejileri

parquetSchema'yı yapılandırmazsanız DataWorks kaynak alan türlerini aşağıdaki stratejilere göre Parquet veri türlerine dönüştürür.


Dönüştürülen veri türü


Parquet türü


Parquet mantıksal türü


CHAR / VARCHAR / STRING


BINARY


UTF8


BOOLEAN


BOOLEAN


Yok


BINARY / VARBINARY


BINARY


Yok


DECIMAL


FIXED_LEN_BYTE_ARRAY


DECIMAL


TINYINT


INT32


INT_8


SMALLINT


INT32


INT_16


INT/INTEGER


INT32


Yok


BIGINT


INT64


Yok


FLOAT


FLOAT


Yok


DOUBLE


DOUBLE


Yok


DATE


INT32


DATE


TIME


INT32


TIME_MILLIS


TIMESTAMP/DATETIME


INT96


Yok