メインコンテンツまでスキップ

Stream Load

Stream Load

1. ストリームロードは、CSV形式のファイルの最初の数行に含まれる列名を識別することや、データの読み込み時に最初の数行をスキップすることをサポートしていますか?

ストリームロードは、CSV形式のファイルの最初の数行に含まれる列名を識別することはサポートしていません。最初の数行は他の行と同様に通常のデータとして扱われます。

v2.5以前では、ストリームロードはデータの読み込み時にCSVファイルの最初の数行をスキップすることをサポートしていません。ロードするCSVファイルの最初の数行が列名を持つ場合は、以下のいずれかの方法を使用してください。

  • データをエクスポートするツールの設定を変更し、最初の数行に列名を含まないCSVファイルとして再エクスポートします。
  • sed -i '1d' ファイル名 のようなコマンドを使用して、CSVファイルの最初の数行を削除します。
  • ロードコマンドやステートメントで、-H "where: <column_name> != '<column_name>'" を使用して、CSVファイルの最初の数行をフィルタリングします。<column_name> は最初の数行に含まれる列名のいずれかです。ただし、StarRocksはソースデータを最初に変換し、それからフィルタリングします。したがって、最初の数行の列名が宛先のデータ型に変換できない場合、NULL 値が返されます。これは、宛先のStarRocksテーブルにはNOT NULL に設定された列を含めることができないことを意味します。
  • ロードコマンドやステートメントで、-H "max_filter_ratio:0.01" を追加して、1%以下の最大エラートレランスを設定し、一部のエラーレコードを許容することで、StarRocksが最初の数行のデータ変換の失敗を無視するようにします。この場合、ステートメントにErrorURL が返されても、ストリームロードジョブは成功します。ただし、max_filter_ratio を大きな値に設定しないでください。大きな値に設定すると、重要なデータ品質の問題が見逃される可能性があります。

v3.0以降、ストリームロードはskip_header パラメータをサポートしており、CSVファイルの最初の数行をスキップするかどうかを指定できます。詳細については、CSVパラメータ を参照してください。

2. パーティション列にロードするデータが、標準のDATE型またはINT型ではありません。例えば、データが202106.00のような形式である場合、Stream Loadでロードする方法はありますか?

StarRocksは、ロード時にデータの変換をサポートしています。詳細については、ロード時のデータ変換 を参照してください。

例えば、TEST という名前のCSV形式のファイルをロードする場合を考えます。このファイルは、NODATEVERSIONPRICE の4つの列で構成されており、DATE 列のデータが202106.00のような非標準の形式であるとします。StarRocksで DATE をパーティション列として使用したい場合は、まず次の4つの列、NOVERSIONPRICEDATE を持つStarRocksテーブルを作成する必要があります。次に、StarRocksテーブルのDATE 列のデータ型をDATE、DATETIME、またはINTに指定する必要があります。最後に、Stream Loadジョブを作成する際に、以下の設定をロードコマンドやステートメントに指定して、ソースのDATE 列のデータ型を宛先列のデータ型に変換します。

-H "columns: NO,DATE_1, VERSION, PRICE, DATE=LEFT(DATE_1,6)"

前述の例では、DATE_1 は宛先の DATE 列にマッピングされる一時的な列と見なすことができ、宛先の DATE 列にロードされる最終的な結果は left() 関数によって計算されます。ソースの列の一時的な名前をまずリストし、それから関数を使用してデータを変換する必要があります。サポートされている関数は、非集約関数とウィンドウ関数を含むスカラー関数です。

3. Stream Loadジョブが「body exceed max size: 10737418240, limit: 10737418240」というエラーを報告した場合、どうすればよいですか?

ソースデータファイルのサイズが10GBを超えており、これがStream Loadでサポートされる最大ファイルサイズです。以下のいずれかの方法を選択してください。

  • seq -w 0 n を使用して、ソースデータファイルをより小さいファイルに分割します。
  • curl -XPOST http:///be_host:http_port/api/update_config?streaming_load_max_mb=<file_size> を使用して、BEの設定項目 streaming_load_max_mb の値を調整して、最大ファイルサイズを増やします。