既知の問題 (制限事項)
以下の制限事項および既知の問題は、 IBM® watsonx.data に適用されます。
グルテンタイプのエンジンではアクセスコントロールは機能しない。
watsonx.data アシスタントを長時間使用するとエラーが発生します
watsonx.data Assistantを長期間使用すると、以下のエラーが発生します。
There is an error with the message you just sent, but feel free to ask me something else.
回避策ブラウザを再読み込みする。
既存の登録を削除した後、SALを再登録できない
非トライアルユーザーが、既存の登録を削除した後、SALを再登録できない。
回避策次の手順を実行します:
-
IAMアクセスクラウドアカウントでユーザーのアクセスを追加します。
-
統合を削除するには、以下のSAL APIを使用します。
curl -X 'DELETE' \ 'https://api.dataplatform.cloud.ibm.com/semantic_automation/v1/wxd_integrations/<wxd-instance-id>' \ -H 'accept: */*' \ -H 'Authorization: Bearer <iam_bearer_token>'
-
以下のAPIを使用して、統合のステータスを確認し、統合が削除されていることを確認してください。
curl -X 'GET' \ 'https://api.dataplatform.cloud.ibm.com/semantic_automation/v1/wxd_integrations/<wxd-instance-id>' \ -H 'accept: */*' \ -H 'Authorization: Bearer <iam_bearer_token>'
-
SALを再登録する。
Queryワークスペースでのマテリアライズドテーブル作成は成功するが、同じパーミッションを使用したSparkノートブックでは失敗する
クエリ]ワークスペースの SQL クエリを使用してマテリアライズド・テーブルを作成しようとすると、操作が成功しました。 このユーザーは、バケットへの読み取りアクセスと、デフォルトのIcebergカタログに対する適切なアクセスポリシー(挿入、更新、選択、削除)を持っています。 しかし、同じSQL文を watsonx.data Sparkテンプレートを使用してSparkノートブック内で実行すると、次のようなエラーが発生します the action is not allowed
。
回避策 Create access control policy
ページで、氷山バケツストレージの L3 ポリシーを定義します。
QHMMバケットは、エンジンが走行状態にあるときのみエンジンに関連付けられます
プロビジョニングの状態で QHMM カタログをエンジンに関連付けると、そのカタログが保守性側に存在しないというエラーが返されます。 しかし、エンジンが走行状態にあるときは、システムが自動的にQHMMカタログを関連付ける。
無効な認証情報のため、テスト接続に失敗しました
データ・ソースの資格情報が正しい場合でも、一部のデータ・ソースで "test connection failure error due to invalid credentials "エラーが発生することがある。 この問題は、有効な認証情報にもかかわらず発生する可能性があり、データ・ソースの接続テストが正常に行われない。
回避策このエラーに遭遇した場合は、 IBM サポートに連絡してください。
リセットボタンを押しても、しきい値の設定がデフォルト設定にリセットされない
Reset
ボタンをクリックしても、しきい値はデフォルト設定やグローバル設定にリセットされません。その代わりに、 Cancel
ボタンの動作に似ている、最後の保存以降の変更が元に戻ります。
回避策デフォルト設定に戻すには、各閾値の設定を必要な値に手動で戻してから、変更を保存してください。
Iceberg テーブルにカラム NDV 統計がないため、最適なクエリプランが得られない
現在の実装では、 Presto ( Java ) および Presto (C++) 内の Iceberg テーブルでは、データシートで利用可能な場合、列 NDV (Number of Distinct Values) 統計は使用されません。 NDVは最適なクエリプランを生成するために重要である。 これがないと、パフォーマンスが著しく低下する可能性がある。
回避策パーティション分割されていないテーブルの場合は、 SET SESSION <iceberg_catalog>.hive_statistics_merge_strategy='USE_NULLS_FRACTION_AND_NDV';
を使用してください。
この回避策はパーティショニングされたテーブルには適用されません。
仮想プライベート・ネットワークの構成制限
IBM Db2 Warehouse, IBM Netezza, IBM Analytics Engine (Spark) などの外部エンジンでは、プライベート・エンドポイントはサポートされていません。
HDFS CPDCTLによるバケット追加はサポートされていません
HDFS バケットの追加は、現在 cpdctl wx-data プラグインではサポートされていません。
IBM watsonx.data Presto Software Hub 5.1.1 以降のコネクタが IBM watsonx.data クラウドインスタンスに接続できない
IBM watsonx.data Presto 520 Cloudflare エラーにより、 IBM watsonx.data インスタンスへの接続に失敗しました。 この問題は、特に watsonx.data インスタンスに多数のポリシーがある場合に、GET /engines
API に複数の同時呼び出しが行われると発生します。
Sparkエンジンのホームバケットの認証情報を変更すると、データとオペレーションが中断する可能性がある
プロビジョニングの過程で、Sparkエンジンのホームバケットとして指定されたストレージバケットのアクセス認証情報を更新すると、データアクセスの問題や運用の失敗につながる可能性がある。
メタストア管理者とメタストア閲覧者がスキーマとテーブルの詳細を表示できない
クエリ]ワークスペースおよび[データ]マネージャでメタストア管理者およびメタストア表示者の権限を持つユーザは、スキーマおよびテーブルに対して表示ポリシーが定義されていない限り、スキーマおよびテーブルの詳細を表示できません。
Presto (C++)でスキーマ進化のシナリオが失敗する
テーブルのカラムを削除したり追加したりすると、クエリが失敗することがあります。 例えば、以下の一連のステートメントを見てください。
create table ice.s3.tessch.12 (age int, name varchar(25), place varchar(25)
insert into ice.s3.tessch.t12 values (35, 'ken', 'paris')
alter table ice.s3.tessch.t12 drop column age
select * from ice.s3.tessch.t12
alter table ice.s3.tessch.t8 add column place varchar(25)
回避策 PARQUET
、セッション内で以下のコマンドを実行する:
set session <catalog-name>.parquet_use_column_names=true;
<catalog-name>
、実際に使用されているカタログに置き換えてください。
または、カタログのプロパティで hive.parquet.use-column-names=true
。 ORC
、カタログのプロパティで hive.orc.use-column-names=true
。
Connection Information
ページでは、ユーザー名が切り捨てられて表示されます
Connection Information
のページでは、 PowerBI
と Looker
のプレフィックス ibmlhapikey_
を除いた、切り捨てられたユーザー名が表示されている。
回避策: BI ツールとの接続を有効にするために値を手動でコピーするときに、ユーザー名に ibmlhapikey_
プレフィックスを追加します。
WE8ISO8859P9 文字セットを使用した Oracle データベースにおけるトルコ語の大文字「İ」に関する問題 ( ORA-00911 エラー)
WE8ISO8859P9 文字セットを使用する Oracle データベースで、大文字のトルコ文字 İ が大文字小文字混合機能フラグ OFF(デフォルト)モードでサポートされていないため、 ORA-00911: 無効文字エラーが発生する。
回避策大文字と小文字の混在フラグをオンに設定する。
デフォルトの information_schema
カタログの表示では、他のカタログのスキーマとテーブルがリストされます
ユーザーが複数のカタログを持っている場合、デフォルトの information_schema
ビューでは、エンジンに関連付けられたカタログに関係なく、他のカタログのスキーマとテーブルも表示されます。
Hive ファイル-カラム-名の読み取りを小文字に設定すると、大文字の全角文字を含む外部カラム名が認識されない
プレストワーカーのカタログプロパティファイル-カラム-名前-読み取り-小文字に変換がtrueに設定されている場合、ASCIIの大文字で表記されたフィールド名はASCIIの小文字に変換されます。 そのため、全角の大文字を含む列名を持つデータは認識されず、「null」として表示されます。
書き込み/削除/更新操作中にADLS署名の有効期限切れによりジョブが失敗する
Sparkジョブが、ADLS Gen1 ストレージでWrite/Delete/Update操作を実行すると、以下のエラーで失敗します。 これは、ADLS署名が処理の途中で期限切れになるために発生します。
java.io.IOException: Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature
回避策 :ADLS署名の有効期限を大きな値に設定します。 ADLS署名の有効期限を制御するには、 spark.hadoop.spark.hadoop.wxd.cas.sas.expiry.period
プロパティを設定します。 300s から 43200s にデフォルト値を更新します。
Presto CLIのパスワードサイズ制限
Presto CLIは、最大1 KB(1024バイト)のパスワード長をサポートしています。 パスワードがこのサイズを超える場合、システムはパスワードフィールドで受け入れることができません。その代わりに、エクスポートする必要があります。
watsonx.data Webコンソールのアップグレード中に、ORCテーブルでtimestamptzデータ型がサポートされなくなりました。
Python のノートブックで、適切なSparkアクセス制御拡張が追加されている場合でも、ハイフンやスペースを含むデータベース名はSparkエンジンでクエリできません。
意味の自動化レイヤーの統合が削除された後も、ビジネス用語は残ります。 IBM watsonx.data
watsonx.data における意味的自動化レイヤー(SAL)の統合のために IBM Knowledge Catalog にインポートされたビジネス用語は、統合が削除されても削除されません。 その後、SALの新規統合が有効になり、同じまたは類似の取引条件が再度アップロードされた場合、取引条件が重複する可能性があります。
回避策 :重複するビジネス用語を避けるには、SAL 統合用にインポートされたすべてのビジネス用語を、クラスタ管理者またはSAL登録を最初に作成したユーザーが手動で削除する必要があります。
Apache Phoenix テーブルのEXISTS句は、クエリ実行時に例外を生成します
Apache Phoenix テーブルのEXISTS句を含むクエリは、参照されたカラムが有効であっても、予期せず失敗することがあります。 これは、 Apache Phoenix によるEXISTS句の解釈の限界によるもので、特にクエリ構造が曖昧であったり、不適切であったりする場合に発生します。
回避策 :この制限に対処するには、以下のいずれかの方法をお試しください
-
サブクエリとメインクエリとの間の関係を明確に定義する。 サブクエリ内にフィルタ条件を導入し、サブクエリとメインクエリとの間に意味のある関係を作成します。 例えば、サブクエリでdepartment_id_bigint IS NOT NULLの場合。 詳しくは以下の例を参照:
SELECT DISTINCT t1.first_name_varchar, t2.performance_rating_real, t1.team_head_varchar FROM phoenix.tm_lh_engine.employee t1, phoenix.tm_lh_engine.departments t2 WHERE EXISTS ( SELECT 1 FROM phoenix.tm_lh_engine.departments WHERE department_id_bigint IS NOT NULL )
-
サブクエリ内のテーブルを明示的に結合することで、関係するテーブル間の明確な関係を確立します。 これにより、サブクエリが文脈的に適切であることが保証され、実行の問題が解決されます。 例えば、サブクエリで t3.department_id_bigint = t2.department_id_bigint の場合。 詳しくは以下の例を参照:
SELECT DISTINCT t1.first_name_varchar, t2.performance_rating_real, t1.team_head_varchar FROM phoenix.tm_lh_engine.employee t1, phoenix.tm_lh_engine.departments t2 WHERE EXISTS ( SELECT 1 FROM phoenix.tm_lh_engine.departments t3 WHERE t3.department_id_bigint = t2.department_id_bigint )
Hive カタログは、テーブルのint型カラムを作成するためのCSV形式をサポートしていません
Hive カタログは、テーブルのint型列の作成でCSV形式をサポートしていません。 以下のエラーが表示されます。
presto> create table hive_data.hive_schema.intcsv ( type int ) with ( format = 'CSV' ) ;
Query 20241017_021409_00059_fmcyt failed: Hive CSV storage format only supports VARCHAR (unbounded). Unsupported columns: type integer
回避策 Hive カタログで次のオプションを使用します:
- varcharでテーブルを作成する。
- 列を元のデータ型にキャストするビューを作成する。
CSVファイルとParquetファイルの取り込み動作に一貫性がない
CSVファイルはCSVファイルから作成されたテーブルにのみインジェストされるべきであり、寄木細工ファイルは寄木細工ファイルから作成されたテーブルにのみインジェストされるべきであるという設計仕様にもかかわらず、ユーザーがCSVファイルを寄木細工テーブルにインジェストできる実際の動作には矛盾があります。 CSVファイルやparquetファイルのスキーマやフォーマットが、ターゲット・テーブルの期待される構造と一致していない場合、予期しない結果やデータ品質の問題、パフォーマンスの問題が発生する可能性があります。
Presto リソース グループの無効なファイルの関連付けによる UI とエンジン再起動の問題
Presto リソース グループのエンジンに無効なファイルが watsonx.data UI を通して関連付けられた場合、エンジンが再起動します。 しかし、ユーザーインターフェイスは、エンジンが新しく割り当てられたファイルを使用していることを誤って表示する可能性があります。
回避策: 新しいファイルが watsonx.data 環境に関連付けられていない場合は、IBM サポートにお問い合わせください。
Hive と Iceberg で時間データ型がサポートされました
Hive: Hive カタログはネイティブに time データ型をサポートしていません。
アイスバーグIceberg は time データ型をサポートしている。
回避策: Icebergテーブル内の時間データを正しく処理できるようにするには、 hive.parquet-batch-read-optimization-enabled
プロパティを false
に設定する必要があります。
異なるスキーマを持つファイルはNULL値になる
watsonx.dataが、さまざまなスキーマでサポートされているファイルタイプのインジェストに対応しました。 しかし、これらのファイル内のカラムが異なるスキーマを持つ場合、それらのカラムの値はNULLに設定される。
スキーマ、テーブル、ストレージ・ロケーションの作成でサポートされていない特殊文字
以下の特殊文字は、スキーマ、テーブル、保存場所の作成時にはサポートされません:
スキーマ( Hive およびIceberg): $
、 ^
、 +
、 ?
、 *
、 {
、 [
、 (
、 )
、 /
。
テーブル ( Hive ): $
^
, +
, ?
, *
, {
, [
, (
, )
, /
, }
, "
, および '
(特殊文字 @
で始まるスキーマ名内のテーブルの作成はエラーとなる)。
表(アイスバーグ):$
、 ^
、 +
、 ?
、 *
、 {
、 [
、 (
、 )
、 /
、 @
、 }
、 "
、 '
。
保管場所 $
^
, +
, ?
, *
, {
, [
, (
, }
, @
, "
, and '
.
テーブル名、カラム名、スキーマ名には、疑問符(?)、ハイフン(-)、アスタリスク(*)、区切り文字(例:¥r、 \n、¥t)などの特殊文字を使用しないことをお勧めします。 これらの特殊文字はサポートされており、テーブル、カラム、スキーマを作成することができますが、INSERTコマンドの実行時やアクセスポリシーの適用時に問題が発生する可能性があります。
シームレスな体験をお楽しみいただくために、以下のリストに従ってください
- スキーマ名には、英数字または
!
、#
、&
、]
、}
、<
、>
、=
、%
、@
のいずれかを含めることができます。 - テーブル名には、文字、数字、または
!
、#
、&
、]
、}
、<
、>
、=
、;
のいずれかを含めることができます。 - 列には、
!
、#
、&
、[
、]
、<
>
、_
、:
、@
のいずれかの文字または数字を入力できます。
Spark のジョブ投入で ALTER TABLE
操作が失敗する
スキーマ、テーブルを作成し、ALTER TABLE
操作を試みる Spark ジョブは、パーミッションが不十分なため authz.AccessControlException
が発生する可能性があります。
これは、スキーマとテーブルの作成が成功したにもかかわらず、メタストアのデータが新しく作成されたスキーマとテーブルの詳細で更新される前に、ジョブが ALTER TABLE
オペレーションを実行しようとするために発生します。
回避策: アクセス拒否エラーを防ぐには、同じPythonスクリプト内で新しいスキーマやテーブルを作成する各操作の間に遅延時間を設ける必要があります。
回避策 DASを無効にするか、バケットまたはオブジェクトストレージが HTTPS エンドポイントで構成されていることを確認してください。
Parquet v2 テーブルを Presto (C++) 経由で読み込もうとすると、エラーが発生します
watsonx.dataのData manager経由で作成されたParquet v2 テーブルをPresto (C++) 経由で読み込もうとすると、以下のエラーが発生します:
Error in ZlibDecompressionStream::Next
Workaround: Presto (C++) は現在、Parquet v2 テーブルの読み取りをサポートしていません。 Presto(C++)を使って読み込むために、v1フォーマットの新しいテーブルにデータをコピーする必要があります。
-
セッション・プロパティをPARQUET_1_0:に設定する
set session <catalog_name>.parquet_writer_version = 'PARQUET_1_0';
-
以下のコマンドを実行して、データを新しいテーブルにコピーする:
create table <catalog name>.<schema name>.<table name> as (select * from <originaltablename>;
Spark ingestionは現在、パーティショニングされたテーブルのカラム名の引用符、バックティック、括弧などの特殊文字をサポートしていません。
Presto (C++) エンジンを使用して、クエリ履歴およびモニタリング管理 (QHMM) 関連のテーブルにクエリを実行すると、エラーが発生することがあります
Presto (C++) エンジンを使って QHMM 関連のテーブルを照会しようとすると、サポートされていないファイル形式のためにエラーが発生することがあります。 Presto(C++) は Parquetv1フォーマットのみをサポートしています。 Presto (C++) を使用して、他の形式のデータやテーブルを照会することはできません。
回避策: Presto (Java) エンジンに切り替えて、QHMM 関連のテーブルに問い合わせることができます。
フライトサーバーでサーバーの同時実行回数制限に達したエラー
フライトサーバーを使用してクエリを実行すると、Server concurrency limit reached(サーバーの同時実行数の上限に達しました)というエラーが発生する場合があります。 これは、多数の同時リクエストによってサーバーのメモリ使用量が多くなった場合に発生する。
回避策フライトポッドの数を増やすか、クエリをシンプルに再構築してサブクエリの数を減らす。 システムの負荷と利用可能なリソースに基づいて、レプリカの数を調整する。
次のコマンドを使用して、 wdp-connect-flight
デプロイのポッド数をスケールします:
oc scale deployment wdp-connect-flight --replicas=<number of replicas>
例えば、ポッド数を36にスケールする必要がある場合、以下のコマンドを実行する:
oc scale deployment wdp-connect-flight --replicas=36
Presto と Hive の Parquet テーブルで、グレゴリオ暦の日付が正しく認識されない
Presto では、0200-01-01
より前の過去の日付を処理する際に、特に Parquet としてフォーマットされた Hive テーブルに格納されている場合に問題が発生します。 この問題は、1582-10-15
で実装されたグレゴリオ暦とユリウス暦の変換によって発生します。 Presto では、この締切日以前の日付は誤って解釈されます。
SHOW COLUMNS出力の列長に関する情報が不完全
Presto の SHOW COLUMNS
クエリは現在、名前、データ型、追加詳細 (extra)、およびコメントを含むカラムに関する情報を提供しています。 この問題は、既存の機能が文字ベースのデータ型(CHARとVARCHAR)の長さに関する詳細を欠いていることを強調している。 コネクタによっては、テーブル作成時に定義された実際の長さを返すものもあれば、デフォルト値を返すものや、まったく情報を返さないものもあります。
この制限に対処するため、SHOW COLUMNS
出力に3つの新しい列が追加された:
-
スケール:小数点以下の桁数を示す。
-
精度:数値データ型に適用され、総桁数を指定する。 (デフォルト:10)
-
長さ:CHARおよびVARCHARデータ型のためのもので、許容される最大文字数を表す。
現在の限界:
-
Length
列で報告される長さは、コネクタの制限により、テーブルスキーマで定義された実際のサイズを必ずしも反映しない場合があります。 -
長さ情報を提供しないコネクタは、コネクタに応じてデフォルト値またはNULLを表示する。
クエリ・オプティマイザにおけるOPT_SORTHEAPの計算エラー
OPT_SORTHEAP
の値に対するクエリ・オプティマイザの構成設定の計算エラーが原因で、クエリ・オプティマイザのパフォーマンスに影響が出る可能性があります。
回避策: クエリオプティマイザで OPT_SORTHEAP
の計算エラーを解決するには、以下の手順を実行して OPT_SORTHEAP= <initial_value>
から OPT_SORTHEAP <initial_value>/20
に設定を更新してください。
- watsonx.dataがインストールされている名前空間を指す
PROJECT_CPD_INSTANCE
環境変数を設定する。
export PROJECT_CPD_INSTANCE=<wxd_namespace
- 以下のコマンドを実行して、
OPT_SORTHEAP
の値をOPT_SORTHEAP <initial_value>/20
に編集する。
oc edit db2uinstance lakehouse-oaas -n $PROJECT_CPD_INSTANCE
STATE
がlakehouse-oaas
のReady
に変わるまでしばらく待ち、次のコマンドを実行する。
watch "oc get db2uinstance -n $PROJECT_CPD_INSTANCE"
制限事項 -Presto(C++)
- Presto(C++) エンジンは現在、データベース カタログをサポートしていません。
- サポートされているファイル形式はParquetのみ。
- Hiveコネクタがサポートされています。
- デフォルトのIcebergテーブルでは、Parquet v1フォーマットでの読み込みのみがサポートされています。
- TPC-H/TPC-DS クエリがサポートされています。
DELETE FROM
そしてCALL SQL
ステートメントはサポートされていません。START
、COMMIT
、 そしてROLLBACK
トランザクションはサポートされていません。- データ型
CHAR
、TIME
、 そしてTIME WITH TIMEZONE
サポートされていません。 これらのデータ型は、VARCHAR
、TIMESTAMP
、 そしてTIMESTAMP WITH TIMEZONE
。IPADDRESS
、IPPREFIX
、UUID
、kHYPERLOGLOG
、P4HYPERLOGLOG
、QDIGEST
、 そしてTDIGEST
サポートされていません。VARCHAR
限られた長さのみをサポートします。Varchar(n)
最大長の制限はサポートされていません。TIME
そしてTIME WITH TIMEZONE
コミュニティ開発にサポートされています。TIMESTAMP
Parquet ファイル内の列は読み取れません。
- スカラー関数:
IPFunctions
、QDigest
、HyperLogLog
、地理空間の国際化はサポートされていません。
- 集計関数:
QDigest
、分類メトリック、および差分エントロピーはサポートされていません。
- S3そしてS3互換性のあるファイルシステム(読み取りと書き込みの両方)がサポートされています。
Presto(C++) 外部パーティションテーブルのクエリに失敗する
外部テーブルをクエリする場合 CHAR
データ型の列がない場合、クエリは実行されません。 この問題は、Presto(C++)はサポートしていません CHAR
データ型。
回避策: CHAR
のデータ型の列を VARCHAR
のデータ型に変更します。
同じグルー・メタストア・カタログ内の Hive 表および Iceberg 表へのアクセス
使用する場合AWSGlueデータカタログは、IcebergとHiveテーブル、Icebergテーブルにアクセスしようとすると、Hiveカタログには、Not a Hive table
エラーが発生し、アクセスしようとしていますHiveアイスバーグカタログの表には、Not an Iceberg table
エラー。
IDを列名として使用するCassandraCREATE TABLE
でCassandra、という名前の列を持つテーブルを作成することはできません ID
使用中にCassandraコネクタ経由Presto。 それの訳は ID
は、Cassandra使用されるドライバーPresto、各行の UUID を自動的に生成します。 列名 ID を使用してテーブルを作成しようとすると、次のように重複した列宣言を示すエラー メッセージが表示されます。 重複した列 id
テーブルの宣言
tm_lakehouse_engine_ks.testtable12
回避策: CassandraテーブルをPrestoを介して作成する場合は、ID
をカラム名として使用しないでください。
CreateCollection
L3 ポリシーを持つユーザーロールが Milvusでコレクションを作成できない
pymilvusで Milvusのコレクションを作成する際、 User role
を持つユーザが、 ORM Connection
と MilvusClient Connection
メソッドを使用すると失敗することがあります。
回避策: 指示に従ってください:
ORM Connection
: ユーザーは両方を必要としますDescribeCollectionそしてCreateCollection与えられた特権L3ポリシーページ。 権限を付与する際には、データベース内のすべてのコレクションを選択する必要があります。DescribeCollection
特権L3 Web コンソール経由でポリシーを管理します。
MilvusClient Connection
: のみ CreateCollection
特権は必要であるL3ポリシーページ。 ただし、コレクションを作成する最初の試みは失敗します。
- 実行
create_collection
一度機能します。 - 再実行
create_collection
再び機能します。 これにより、ポリシーが同期され、コレクションの作成が成功します。
特殊文字と大文字と小文字の混在がデータの同期に影響する
名前に特殊文字または大文字と小文字が混在するテーブルまたはスキーマを含むバケット間でデータを同期する場合、次の予期しない動作が発生する可能性があります。
- 特定の特殊文字を含むテーブルまたはスキーマ
%
、,
、{
、)
、(
、@
、$
、[
、:
同期中にデータが完全にスキップされます。 - 大文字と小文字が混在するテーブルまたはスキーマは、同期前に小文字に変換されます。
回避策: 表名およびスキーマ名には、特殊文字と大/小文字混合を使用しないでください。 サポートされている文字のみを使用するように、既存の表およびスキーマの名前を変更します。
Amazon S3 ストレージ・エンドポイントのデータ検証が欠落している
現在、ユーザー・インターフェース (UI) は、 Amazon S3 ストレージ・タイプに関連付けられているエンドポイントに対してデータ検証を実行しません。
WITH
節および USE catalog.schema
での別名の使用法が正しくない
WITH
節: WITH
節内のデータを参照する場合は、その定義時に割り当てられた正確な別名を使用します。 誤った別名を使用すると、以下のエラー・メッセージがトリガーされます。
Schema must be specified when session schema is not set
WITH
節とともに USE catalog.schema
を使用する場合: WITH
および USE catalog.schema
を使用して表を指定すると、誤った別名を持つ照会を実行すると、以下のエラーが発生します。
Table does not exist
文字列リテラルの解釈Presto(Java)
Presto(Java) は、他の多くのデータベース システムが文字列リテラルを CHAR として扱うのとは異なり、デフォルトで文字列リテラルを VARCHAR として解釈します。
でPresto(Java) の場合、文字列の比較は、末尾のスペースを除いた文字列内に存在する実際の文字に対して実行されます。 これにより、末尾スペースを含む可能性があるストリングを処理するときに、照会が誤った結果を返す可能性があります。これは、これらのスペースが比較時に考慮されないためです。
複数のドットを含む表名
Presto(Java) は、名前に 3 つ以上の連続したドットが含まれるテーブル名の作成またはクエリをサポートしていません。 このような表を照会で参照しようとすると、エラーが発生する可能性があります。
IAM からユーザーを削除した後も、そのユーザーはエンジンの「アクセス制御」ページに表示されます。
LDAP 認証は、 Teradata コネクターではサポートされていません。
watsonx.data Teradata コネクターは、現在、ユーザー認証に LDAP (Lightweight Directory Access Protocol) をサポートしていません。
回避策: 502 エラーが発生した場合は、1 秒から 5 秒待ってから Spark ヒストリー UI ページを再ロードしてください。 これにより、サーバーが作動可能になるのに十分な時間が確保されます。
Prestoのクロスカタログスキーマ作成の異常。
Prestoが管理するHiveカタログとIcebergカタログのスキーマ作成に異常があります。 複数のカタログ(IcebergカタログとHiveカタログ、または2つのIcebergカタログまたはHiveカタログ)で共通のHiveメタストア サービスを使用する場合、1つのカタログでスキーマを作成すると、間違ったカタログにスキーマが作成されることがあります。 これは、スキーマの作成時に指定されたロケーションが、意図したものとは異なるカタログに属している場合に発生します。
回避策 Presto で CREATE SCHEMA
ステートメントを使用する場合は、ターゲット カタログに関連付けられている正しいストレージ パスを常に明示的に指定する必要があります。 これにより、スキーマが目的の場所に確実に作成されます。
Presto(Java) 列数が多く、サイズがデフォルトの制限を超えるクエリ。
Presto(Java)多数の列(例えば、テーブルあたり1000列以上)を持つ複数のテーブルを含むクエリでは、SELECT
この句により、すべてのデプロイメント環境でパフォーマンスの問題が発生する可能性があります。
max_reorder_joins
が 5 以上 (デフォルトのタイムアウトは 3 分) に設定されている場合、反復オプティマイザーはタイムアウトになり、以下のエラーを出します。
The optimizer exhausted the time limit of 180000 ms
デフォルトを超えるクエリの場合 max-task-update-size
制限(16MBでPresto(Java))、あなたは TaskUpdate size exceeding this limit
エラー (制限の具体的な値は実際のクエリによって異なります)。
回避策:
-
以下のセッション・プロパティーを使用して
reorder_joins
ルールを一時的に無効にすることで、照会のパフォーマンスを向上させることができます。set session reorder_joins = false;
-
増加
max-task-update-size
価値の config.properties 問題がTaskUpdate size exceeding the limit
エラーと再起動Presto(Java)。
例:
experimental.internal-communication.max-task-update-size=64MB
制限: ログに記録されていない Informix データベースでは、トランザクションはサポートされていません。
watsonx.dataで、ログに記録されていない Informix データベースでトランザクションへの影響がある照会を実行しようとすると、照会は失敗します。 これは、ログに記録されていない Informix データベースは、設計上、トランザクションをサポートしていないためです。
制限: Netezza Performance Server INSERT ステートメントの制限。
Netezza Performance Server は現在、VALUES 節を使用した表への複数行の直接挿入をサポートしていません。 この機能は、単一行の挿入に限定されています。 INSERT ステートメントの詳細については、 Netezza Performance Server の資料 を参照してください。
複数行に対して VALUES を使用する以下の例はサポートされていません。
INSERT INTO EMPLOYEE VALUES (3,'Roy',45,'IT','CityB'),(2,'Joe',45,'IT','CityC');
回避策: SELECT および UNION ALL を指定した副照会を使用して、一時結果セットを構成し、それをターゲット表に挿入します。
INSERT INTO EMPLOYEE SELECT * FROM(SELECT 4,'Steve',35,'FIN','CityC' UNION ALL SELECT 5,'Paul',37,'OP','CityA') As temp;
問題: Milvusが問い合わせに応答しない。
Milvusは、利用可能なメモリ容量を超えるコレクションまたはパーティションをロードしようとすると、クエリに応答しない場合があります。 これは、 Milvus 内のすべての検索およびクエリ操作がメモリ内で実行され、クエリ前にコレクションまたはパーティション全体をロードする必要があるためです。
回避策:
-
Milvus 展開のメモリ制限を考慮し、過度に大きなコレクションやパーティションのロードを避けてください。
-
Milvusがクエリに応答しなくなった場合は、適切な Milvus APIを使用して、メモリからコレクションをアンロードまたは解放してください。 Python SDKを使用した例:
collection.release()
問題 Milvusで削除後の行カウントが不正確。
collection.num_entities
プロパティは、削除操作後の Milvus コレクションの実際の行数を反映しない場合があります。 このプロパティーは見積もりを提供するものであり、削除されたエンティティーを説明するものではありません。
正確な行数を取得するには、コレクションに対して count(*)
照会を実行します。 これにより、削除後も正確なカウントが提供されます。
Pymilvus の構文:
collection = pymilvus.Collection(...)
collection.query(expr='', fields=['count(*)'])
制限: サポートされない Db2 操作。
watsonx.data は現在、 Db2 カラム・オーガナイズ表に対する ALTER TABLE DROP COLUMN 操作をサポートしていません。
デフォルトでは、 Db2 インスタンスはカラム・オーガナイズ形式で表を作成します。
watsonx.data は、 Db2での行オーガナイズ表の作成をサポートしていません。
制限: Elasticsearchでのヌル値の処理。
Elasticsearch コネクターでは、データのロード時に NULL 値を処理するために、フィールドの索引マッピングを明示的に定義する必要があります。
制限: Elasticsearchを使用したネストされた JSON のロード。
Elasticsearch コネクターでは、ユーザーは、適切なロードおよび照会のために、ネストされた JSON 構造を ROW タイプの配列として明示的に指定する必要があります。 このような構造を処理するには、UNNEST 操作を使用します。
制限ユーザは、 IBM Cloudの watsonx.data インスタンス1つに対して、 Milvus サービスを3インスタンス作成することができます。
問題Presto でビューを作成できない。
Prestoは、マップされたデータベースのビューをVIEWではなくTABLEとして記述します。 これは、Prestoエンジンに接続するJDBCプログラムには明らかです。
問題: データ・アクセスの取り消しに関するカタログ・アクセス制御からユーザーが削除されない。
「アクセス制御」 画面を使用してユーザーをデータ制御ポリシーに追加することにより、ユーザーにユーザー・アクセス権限を付与すると、そのユーザーはカタログに対して正常にリストされます。 「アクセス制御」 ページからユーザー・アクセス権限を取り消すと、ユーザーはカタログに対してリストされたままになり、引き続きユーザー・アクセス権限を持ちます。
問題: 期待されるカタログを表示できないPresto(Java)。
管理者権限を持つユーザーは、期待どおりに表示できません。HiveそしてPostgreSQLカタログからPresto(Java)。
問題: コンソール UI に無効なユーザーがリストされる。
watsonx.dataユーザー(user1 ) が新しいユーザーを招待します (user2 )をアカウントに追加して、アクセスとユーザーの管理画面(管理 > アクセス (IAM) > アクセスとユーザーの管理)にアクセスを許可し、ロール(MetastoreAccess,閲覧者、オペレーター、編集者、管理者)。 User2 は、 user1のアカウントを介して watsonx.data インスタンス内のリソースへのアクセス権限を取得します。 さらに、 「アクセス制御」 画面を使用してデータ制御ポリシーに追加することにより、 user2 にリソース・レベルでのデータ・アクセス権限が付与されます。 user1 が user1のアカウントから user2 を削除した場合、 user2 は引き続きリソース・レベルの 「アクセス制御」 タブにリストされます。
問題: 作成されたスキーマを表示できません。
「ユーザー」役割と「作成」アクセス権を持つユーザー (「作成」アクセス権のみを持つユーザー) が外部データベースに追加されると、作成したスキーマが表示されません。 ユーザーはスキーマを作成できますが、表示することはできません。 システム応答は以下のとおりです。
presto:default> show schemas;
Schema
--------
(0 rows)
回避策: ユーザーが作成したスキーマの選択特権を付与します。
問題: 外部データベースの照会中にアクセスが拒否されました。
「ユーザー」役割と「作成」アクセス権 (ユーザーは「作成」アクセス権のみを持つ) を持つユーザーが外部データベースに追加された場合、作成した表から選択照会を実行することはできません。 ユーザーはPresto(Java) エンジンを使用してテーブルとスキーマを作成しても、テーブルからクエリすることはできません。 システムは Access Denied
メッセージを表示します。
Query 20230608_132213_00042_wpmk2 failed: Access Denied: Cannot select from columns [id] in table or view tab_appiduser_01
回避策: ユーザーが作成した表の選択特権を付与します。
問題: スキーマが別のカタログの下に作成されています。
スキーマは、Iceberg カタログと Hive カタログで使用できます。 スキーマが Iceberg カタログの下に作成されると、そのスキーマは Hive カタログの下にリストされます。その逆も同様です。
問題:Presto(Java) は Iceberg テーブルの削除をサポートしていません。
Db2で DROP SCHEMA を発行します。
Db2では、スキーマは空の場合にのみドロップできます。 空でないスキーマに対して DROP SCHEMA
ステートメントを開始すると、Db2 SQL エラー SQLCODE=-478
および SQLSTATE=42893
が発生する可能性があります。
Db2で部分的にサポートされている CREATE VIEW ステートメントを発行します。
Db2 コネクターは、CREATE VIEW
ステートメントを部分的にサポートします。 のPresto(Java) でサポートされている SQL 構文には、カスタム列名 (テーブル列名とは異なる) を持つビューの作成は含まれません。
NPSaaSで部分的にサポートされている CREATE VIEW ステートメントを発行します。
NPSaaS コネクターは、CREATE VIEW
ステートメントを部分的にサポートします。 のPresto(Java) サポートされている SQL 構文には、カスタム列名 (テーブル列名とは異なる) を持つビューの作成は含まれません。
問題:Presto(Java) はパスをディレクトリとして認識しません。
新しいテーブルを作成すると、Presto(Java)HiveコネクタはS3外部の場所からフォルダ、Presto(Java) はパスをディレクトリとして認識しないため、エラーが発生する可能性があります。
例えば、IBM Cloud UX および Aspera S3 コンソールを使用して、dqmdbcertpq
というバケット内のターゲット・ディレクトリー DBCERT/tbint
に顧客表を作成すると、External location must be a directory
というエラーが発生します。
CREATE TABLE "hive-beta"."dbcert"."tbint" (
RNUM int , CBINT bigint
) WITH (
format='PARQUET', external_location = 's3a://dqmdbcertpq/DBCERT/tbint'
);
Query 20230509_113537_00355_cn58z failed: External location must be a directory
ファイル・システム内のオブジェクトは、オブジェクトとそのパスとして保管されます。 オブジェクトとパスにはメタデータが関連付けられている必要があります。 パスがメタデータに関連付けられていない場合、Presto(Java) はオブジェクトを認識できず、パスがディレクトリではないと応答します。
発行: 特権の付与または取り消しを割り当てます。
以下のシナリオでは、アクセス・ポリシーを使用して 「付与」 または 「取り消し」 特権をユーザーに割り当てると、予期したとおりに機能しません。
-
User_A がバケットと Hive カタログ (例えば、
useracat02
) を追加します。 -
User_A がスキーマと表を作成します。
-
User_B および User_C には、カタログに対する User 役割が割り当てられます。
-
User_A が許可付与ポリシーを User_B に追加します。
-
User_B がカタログに接続し、User_C に対して
grant select
を実行します。presto:default> grant select on useracat02.schema_test_01.tab_1 to "6ff74bf7-b71b-42f2-88d9-a98fdbaed304";
-
User_C がカタログに接続し、表に対して
select
コマンドを実行すると、コマンドは失敗し、アクセス拒否メッセージが表示されます。presto:default> select * from useracat02.schema_test_01.tab_1; Query 20230612_073938_00132_hthnz failed: Access Denied: Cannot select from columns [name, id, salary, age] in table or view tab_1
問題: ロケーションを指定せずにスキーマを作成する。
ロケーションを指定せずにスキーマを作成すると、どのカタログのスキーマ・リストにもリストされません。 例えば、バケットの場所を指定せずにスキーマを作成すると、スキーマはバケット内ではなく HMS 内に作成されます。 同じ名前で新規スキーマを作成しようとすると、失敗し、スキーマが既に存在するという応答が返されます。
回避策: スキーマの作成時にバケットの場所を指定します。
問題: スキーマとバケットの固有の名前。
スキーマとバケットを同じ名前で作成することはできません。 例えば、あるカタログで「sales」という名前のスキーマを作成した場合、同じ名前を別のカタログの別のスキーマに使用することはできません。 同様に、「salesbucket」という名前のバケットを登録した場合、そのバケットが別のオブジェクト・ストアに配置されていても、同じ名前の別のバケットを登録することはできません。
回避策: スキーマおよびバケットを作成する際には、固有の名前を使用してください。
問題: ターゲット表のスキーマを作成しています。
スキーマが存在しない場合は、ターゲット表のスキーマを作成する必要があります。
問題: CSV ファイルに正しくないレコードが含まれていると取り込みが失敗する。
ibm-lh ツールは、不一致フィールドが表定義より大きい場合に CSV ファイルの不良レコードの最大数をスキップすることをサポートしていません。
問題: パスを使用してスキーマ・ロケーションを作成しています。
スキーマの作成時には、以下のいずれかのロケーション・オプションを使用します。
- 末尾に
/
がないバケット/サブパスを指すロケーション。 - 末尾に
/
があるバケット/サブパスを指す場所-構造化を向上させるために推奨されます。
末尾に /
があってもなくても、バケットを指すロケーションを使用できますが、障害が発生する可能性があります。 したがって、サブパスを使用することをお勧めします。
問題:Presto(Java)はサポートしていません AS OF
氷山テーブル付き。
Presto(Java)はサポートしていません AS OF <time stamp>
SELECT クエリ内のコマンド。
回避策: CALL iceberg_data_rollback_to_snapshot
を呼び出して、必要なタイム・スタンプに移動します。
タイム・スタンプ付きで CALL iceberg_data_rollback_to_snapshot
を使用する場合、ストアード・プロシージャーを呼び出して後のタイム・スタンプに移動することはできません。 代わりに Spark SQL を使用してください。
問題: Apache Hive (API) の表に対する DROP アクセス権限を持つのは作成者のみです。
Apache Hive カタログで作成された表をドロップできるのは、表の作成者のみです。 他のユーザーは、表に対する明示的な DROP アクセス権限を持っていても、表をドロップすることはできません。 Access Denied
メッセージが表示されます。
問題: ユーザー提供の証明書が watsonx.dataでサポートされていない。
現在、データベース接続、オブジェクト・ストア・バケットを追加する場合、または ibm-lh ユーティリティーを使用する場合、ユーザー提供の証明書は watsonx.data ではサポートされません。
問題:「ファイルから解析する列がありません」エラー。
ibm-lh ツールを使用して AWS S3 からフォルダーを取り込もうとすると、フォルダー内に空のファイルがない場合に以下のエラーが発生することがあります。
No columns to parse from file
回避策: まず、 aws s3 ls
コマンドを使用して、バケット内のフォルダーをリストします。 空のファイルがリストされない場合は、 aws s3 cp
コマンドを使用して、すべてのファイルを別のフォルダーにコピーします。
ターゲット表名に特殊文字が含まれていると、取り込みが失敗する可能性があります。
Web コンソールを介して取り込む際に、ターゲット表の名前に特殊文字が含まれていると、取り込みは失敗します。
回避策: Spark CLI で取り込みを使用してデータを取り込むことができます。
制限:Presto(Java)はサポートしていません VARBINARY
データ・タイプ。
現在のバージョンPresto(Java) は長さのあるバイナリ文字列をサポートしていません。 データベースに対して ALTER TABLE
ステートメントを実行すると、次のエラーが発生します。
Unknown type 'varbinary(n)' for column 'testcolumn'
これは Preso の制限であり、 watsonx.dataの制限ではありません。
制限:VS Codeの開発環境 - Spark Labsで作業中のデータ損失を防ぐために、データをバックアップしてください。
Sparkラボは本質的にエフェメラルであるため、アップグレード時やSparkマスターのクラッシュ時にデータが失われる可能性を防ぐために、保存されているデータを定期的にバックアップする必要があります。